[
关于Java中文件名和类名的误解
在java类中给出的第一个讲义是“在java文件名和类名中应该是相同的”。当违反上述法律时,会出现编译器错误信息,如下所示
/***** File name: Trial.java ******/
public class Geeks
{
public static void main(String[] args) {
System.out.println("Hello world");
}
}
输出:
javac Trial.java
Trial.java:9: error: class Geeks is public, should be
declared in a file named Geeks.java
public class Geeks
^
1 error
但是这个神话可以通过编译上述文件的方式来违反。
/***** File name: Trial.java ******/
class Geeks
{
public static void main(String[] args) {
System.out.println("Hello world");
}
}
第1步:javac Trial.java
Step1将创建一个没有任何错误消息的Geeks.class(字节码),因为该类不是公共的。
第2步:Java Geeks
现在输出将是Hello world
只有在公开声明类时,关于文件名和类名的说法应该是相同的。
上述程序的工作原理如下:
现在可以执行这个.class文件。通过上述功能,可以完成更多的奇迹。在java文件中可能有很多类。为了调试目的,可以使用这种方法。每个类都可以单独执行以测试它们的功能(仅在一个条件下:不应使用继承概念)。
但总的来说,遵循java的规则还是好的。
例如:
/*** File name: Trial.java ***/
class ForGeeks
{
public static void main(String[] args){
System.out.println("For Geeks class");
}
}
class GeeksTest
{
public static void main(String[] args){
System.out.println("Geeks Test class");
}
}
当上述文件编译为javac时,Trial.java将创建两个.class文件,分别为ForGeeks.class和GeeksTest.class。
由于每个类都有单独的main()存根,因此可以单独进行测试。
当执行java ForGeeks时,输出是For Geeks类。
当执行java GeeksTest时,输出是Geeks Test类。
]