Java中关于文件名和类名的神话
Java课上的第一个讲义是“在Java中文件名和类名应该相同”。当违反上述法律时,将出现如下编译器错误消息
Java
/***** File name: Trial.java ******/
public class Geeks {
public static void main(String[] args)
{
System.out.println("Hello world");
}
}
Java
/***** File name: Trial.java ******/
class Geeks {
public static void main(String[] args)
{
System.out.println("Hello world");
}
}
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");
}
}
Java
// Program to find area of triangle
class Triangle {
int x, y;
void printArea()
{
System.out.println("Area of triangle is: " + x * y / 2);
}
}
class Demo {
public static void main(String args[])
{
// Object creation
Triangle t = new Triangle();
t.x = 10;
t.y = 13;
t.printArea();
}
}
输出:
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
但是可以通过编译上述文件的方式违反神话。
Java
/***** File name: Trial.java ******/
class Geeks {
public static void main(String[] args)
{
System.out.println("Hello world");
}
}
第1步:
javac Trial.java
第 1 步将创建一个 Geeks.class(字节码),没有任何错误消息,因为该类不是公开的。
第2步:
java Geeks
现在输出将是Hello world
只有当类在public中声明时,关于文件名和类名的神话才应该相同。
上述程序的工作原理如下:
现在,这个.class文件可以被执行了。通过以上特点,可以创造更多的奇迹。一个Java文件中可以有很多类。出于调试目的,可以使用这种方法。每个类都可以单独执行以测试它们的功能(仅在一个条件下:不应使用继承概念)。
但总的来说,遵循神话是好的。
示例 1:
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 时试一试。 Java这将创建 2 个 .class 文件作为ForGeeks.class 和 GeeksTest.class 。
由于每个类都有单独的 main() 存根,因此可以单独测试它们。
- 执行Java ForGeeks时,输出为For Geeks class 。
- 执行Java GeeksTest时,输出是Geeks Test class 。
示例 2:
Java
// Program to find area of triangle
class Triangle {
int x, y;
void printArea()
{
System.out.println("Area of triangle is: " + x * y / 2);
}
}
class Demo {
public static void main(String args[])
{
// Object creation
Triangle t = new Triangle();
t.x = 10;
t.y = 13;
t.printArea();
}
}
注意:这里有两个类, Triangle和Demo 。那么必须将哪个类名视为文件名呢?
类名 Demo 必须作为文件名。之所以取 Demo 作为文件名,是因为它有 main 方法,并且从 main 方法开始执行。
Filename: Demo.java
Compilation: javac Demo.java
Run: java Demo
Output: Area of triangle:65