那是因为你的那个class名是Person而非Demo类。.class文件名永远与类名严格相同。
并且你的那个class不是public类型的,于是允许.java的文件名与类名不一致。如果是public类,则类名与文件名必须严格保持一摸一样。
补:
就是啊,只要类名是Person,那么编译出来永远生成Person.class,不管你的文件名是什么。并且,如果你的类是public类,只要文件名不是Person.java,则编译不通过。
楼上说的有道理,一般来说public 的class 必须和文件名相同;
但是不是public的 比如你不写public 默认default 的 则会编译出你文件内写的class 。
首先你在class person 前增加 public 编译 不会通过。这说明public 的class必须和文件名相同。
你那种写法 不是public 而是default。
2要想编译出Demo.class 修改你的person 为demo