
"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 as below, or enter http://melksh.am/nnnn for individual articles
J703 - Java - Variables [127] Conversion and coercion in Java - (2004-11-22)
[1448] Question on division (Java) - Also Perl, PHP, Python ... - (2007-11-28)
[2148] Variable scope in Java Servlets and other web applications - (2009-05-01)
[3038] Setting up individual variables, and arrays, in Java - some commented examples - (2010-11-09)
[3041] Java - basic rules for arithmetic, variables and conversion - (2010-11-10)
[3278] Do I need to initialise variables - programming in C, C++, Perl, PHP, Python, Ruby or Java. - (2011-05-05)
[3365] Turning bright delegates into bright and knowledgable ones - (2011-07-21)
[3917] BODMAS - the order a computer evaluates arithmetic expressions - (2012-11-09)
[4324] Learning to program - variables and constants - (2014-11-22)
[4345] Incrementing a variable in Java - Pre and Post Increment - (2014-12-08)
A503 - Web Application Deployment - Java - Sourcing, Installing, Initial Testing [1908] Java CLASSPATH explained - (2008-11-26)
[2079] Java - Memory Allocation and garbage collection - (2009-03-14)
[2080] Using ApacheBench and jconsole to test and monitor Tomcat - (2009-03-14)
[2184] Choosing the right version of Java and Tomcat - (2009-05-16)
A502 - Web Application Deployment - Java - Basic Tools [754] tar, jar, war, ear, sar files - (2006-06-10)
[1082] Straight from the .jar - (2007-02-16)
[1192] What are WEB-INF and META-INF directories? - (2007-05-18)
[1562] Java Compiler - needs all classes, compiles them all too - (2008-03-03)
[1771] More HowTo diagrams - MySQL, Tomcat and Java - (2008-08-24)
[1909] javax.servlet cannot be resolved - how to solve - (2008-11-26)
[2422] Looking inside Java classes - javap and javadoc - (2009-09-25)
[2859] Using java, javac, jar, and CLASSPATH - a simple example - (2010-07-07)
[3151] Disassembling Python and Java - previously compiled code - (2011-01-29)
[3819] Packing a tar, jar or war file - best practise - (2012-07-26)
[4412] Java -making sure you have the right versions - (2015-02-02)
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