
"Where did you get THAT from?" Ever heard that question? I've asked it of Java sometimes, in wondering where a Java virtual machine has found a class from ... and it's not always obvious.
When loading a class, Java looks at each location given in the CLASSPATH in turn ... and if there are import directives in the code, it will also look in the specified subdirectory offset from each member of the classpath. So in this example, there are three places to look on the CLASSPATH (two directory structures and a .jar file) and for each of them it will look in the specified place, and also at two other places which are imported within them - making a possible 9 locations where it might find the Bicycle class.

You can always get the contents of a pint bottle into a litre bottle, but only SOMETIMES can you get the contents of a litre bottle into a pint one (those some times being if the litre bottle is only half full or less!).
It's the same with variables ... a float can always go into an integer, but an integer may loose something if it goes into a float.
Java automatically does conversions where it's certain that nothing will be lost (coercion), but if something
might be lost, it makes the programmer say "yes, I AM sure" by using a cast.
(written 2009-05-02)
Associated topics are indexed under
J703 - Java - Variables [3365] Turning bright delegates into bright and knowledgable ones - (2011-07-21)
[3278] Do I need to initialise variables - programming in C, C++, Perl, PHP, Python, Ruby or Java. - (2011-05-05)
[3041] Java - basic rules for arithmetic, variables and conversion - (2010-11-10)
[3038] Setting up individual variables, and arrays, in Java - some commented examples - (2010-11-09)
[2148] Variable scope in Java Servlets and other web applications - (2009-05-01)
[1448] Question on division (Java) - Also Perl, PHP, Python ... - (2007-11-28)
[127] Conversion and coercion in Java - (2004-11-22)
A502 - Web Application Deployment - Java - Basic Tools [3151] Disassembling Python and Java - previously compiled code - (2011-01-29)
[2859] Using java, javac, jar, and CLASSPATH - a simple example - (2010-07-07)
[2422] Looking inside Java classes - javap and javadoc - (2009-09-25)
[1909] javax.servlet cannot be resolved - how to solve - (2008-11-26)
[1771] More HowTo diagrams - MySQL, Tomcat and Java - (2008-08-24)
[1562] Java Compiler - needs all classes, compiles them all too - (2008-03-03)
[1192] What are WEB-INF and META-INF directories? - (2007-05-18)
[1082] Straight from the .jar - (2007-02-16)
[754] tar, jar, war, ear, sar files - (2006-06-10)
A503 - Web Application Deployment - Java - Sourcing, Installing, Initial Testing [2184] Choosing the right version of Java and Tomcat - (2009-05-16)
[2080] Using ApacheBench and jconsole to test and monitor Tomcat - (2009-03-14)
[2079] Java - Memory Allocation and garbage collection - (2009-03-14)
[1908] Java CLASSPATH explained - (2008-11-26)
Some other Articles
From the 51773 familyStopping forum spam - control of the signup processNo subject or title?Bean Classes in Java and Java Database ConnectionsClass Loading and Variable Conversion in JavaMy four feet!What is a JSP tag library?Routers, Firewalls and multilayer serversRouting Network Traffic - Proxies, Redirects and DNS