javac编译生成的.class文件与.java文件名字不相同,这是为什么?,

2025-01-05 22:20:29
推荐回答(2个)
回答1:

那是因为你的那个class名是Person而非Demo类。.class文件名永远与类名严格相同。
并且你的那个class不是public类型的,于是允许.java的文件名与类名不一致。如果是public类,则类名与文件名必须严格保持一摸一样。

补:
就是啊,只要类名是Person,那么编译出来永远生成Person.class,不管你的文件名是什么。并且,如果你的类是public类,只要文件名不是Person.java,则编译不通过。

回答2:

楼上说的有道理,一般来说public 的class 必须和文件名相同;
但是不是public的 比如你不写public 默认default 的 则会编译出你文件内写的class 。

首先你在class person 前增加 public 编译 不会通过。这说明public 的class必须和文件名相同。
你那种写法 不是public 而是default。
2要想编译出Demo.class 修改你的person 为demo