在随手写小例子的时候
import java.util.*; public class MyClass { int a = 10; } public class hello { public static void main(String[] args){ MyClass class1 = new MyClass(); MyClass class2 = new MyClass(); System.out.println(class1.a); System.out.println(class2.a); } }
云里雾里,居然说java源文件应该是MyClass.java,可我main函数写在了hello类里了
# javac hello.java hello.java:3: error: class MyClass is public, should be declared in a file named MyClass.java public class MyClass { ^ 1 error
而将类MyClass前面的public去掉,编译就不会报错了,可见这里是自己的误解,文件名应该与文件中唯一的一个public类名一致,当然main函数还是在这个public类里,好吧,自己实在是有点弱
要求有以下几点:
1:一个java源文件中只能有一个public类
2:假如只有一个类,文件名和类名一致
3:假如不止一个类,有public类的话,文件名和public类名一致
4:假如不止一个类,没有public类,文件名随意和哪个类名一致