java class前如果不加public的话,类名和文件名可以不相同吧?这个程序为什么会出错???

图片说明
图片说明
图片说明

总结:如果使用记事本来写这个程序,是没有问题的,只要javac Saaa.java和java Saaaaa就可以了,但是在eclipse中不能直接运行,而是应该在run configuration中将运行的类修改为Saaaaa,因为eclipse默认运行的类和java文件名是相同的。这个程序本身是一点问题都没有的,只要类前不加public,那么类名和文件名就可以不相同。
图片说明

我的文件名为Test.java

// 第一种情况,源文件中有多个class的情况,可以正常运行。

 public class Test {
    public static void main(String[] args) {
        System.out.println("test");
    }
}

class A {}
class B {}
class C {}


// 第二种情况:源文件中只有一个class,但不是public的,不与文件名相同没关系,编译时不会报错。
// 只是找不到程序入口,你执行不了该程序,你的问题属于第二种。

class Test1 {
    public static void main(String[] args) {
        System.out.println("test");
    }
}

但是作为程序入口的类必须是public的

我只要将类名和文件名改为相同,这个程序就可以正常运行,并不是一定需要public

一个记事本或写成程序的一张页面,类只能有一个public,而且包含主函数的类名必须与文件名相同

改了之后这个程序就没有入口了。

这个类要是入口呢??

包含主函数的类,类名必须与文件名相同!

没有加public的话,默认是default。。。再就是类名必须和文件名相同

事实证明,用记事本写是没有问题的,但是eclipse好像不行

求采纳!!!1java有严格的要求的:如果源文件中有多个类,则最多只能有一个public类,且源文件名必须与该public类名相同;如果没有public类,则源文件名必须是源文件中任意一个类的名字。

提一个意见,项目名字不要是中文,很不好

至少有一个类名需要和文件名相同

有主函数的话,就必须要一致了,且要是public