关于Java中文件名和类名的误解

[

关于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

只有在公开声明类时,关于文件名和类名的说法应该是相同的。

上述程序的工作原理如下:
关于Java中文件名和类名的误解

现在可以执行这个.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类。

]
转载请保留页面地址:https://www.breakyizhan.com/java/3728.html

posted on 2020-07-07 20:56  MrAit  阅读(405)  评论(0编辑  收藏  举报

导航