若在 one.java 中有 Test 类。在two.java 中也有 Test 类。java Test 是解释哪个类?demo:若先 javac one.java 再 java Test 。是解释 one 文件中的 Test 类。若先 javac two.java 再 java Test 。是解释 two 文件中的 Test 类。但 javac 是编译器,把 .java 文件编译成 .class 文件 ;而 java 是解释器,解释的是类,并不是解释 .class 文件。那为什么 java 命令会和刚执行的 javac 命令有关?
如一个java文件中包含两个类的定义,A和B,则编译之后会生成A.class和B.classjava命令是解释执行“类”,这个“类”就是指.class文件。比如java Test,实际上会去找Test.class文件,如果找不到就会出错。如果两个文件中都包含Test类的定义,那么肯定不能编译在同一个文件夹下。想一想,操作系统允许在同一个文件夹下放置两个名都为Test.class的文件吗?
=======================================================
那解释什么?java就去执行.class,java这个命令不会管你的.java文件的
javac two.java //生成两个文件:two.java Test.java(文件名相同,把上一个覆盖掉了)
java Test //当然执行的是two文件中的Test。
javac one.java //生成两个文件:one.class Test.class
javac two.java //生成两个文件:two.class Test.class(文件名相同,把上一个覆盖掉了)
java Test //当然执行的是two文件中的Test。