A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

在保存Java代码时不小心把保存字写错了。但是用错误的名字javac通过啦,并且自动生成正确的.class文件名。想知道为什么。还有为什么Java .class文件时文件名必须和类同名。

评分

参与人数 1技术分 +1 收起 理由
职业规划-刘倩老师 + 1 赞一个!

查看全部评分

11 个回复

倒序浏览
javac编译时找的是你输入的文件名,不管你保存的文件名是什么,只要你输入正确了,都能找到,跟你java文件里的类名没关系,编译以后生成的class文件名就是你的类名,当然是同名的
回复 使用道具 举报
Class保存的时候命名是获取类名的,例:类名.class
如果你的JAVA文件名不是类名的也行,只是编译运行的时候
javac     文件名.java    //javac编译的时候是用到JAVA文件的文件名
java       类名        //java运行的时候是用到类名
回复 使用道具 举报
1、javac.exe的功能是编译.java文件,执行的是你的.java文件,所以在执行时需要在javac后加上.java的文件名;
2、如果你的.java文件中有多个.class文件,会生成多个.class文件,每个.class文件名都是你.java中的class名称;
3、在执行java.exe时,需要确定执行哪个.class文件;
回复 使用道具 举报
要看哪个类  文件名和带主方法的类同名,这样运行这个文件等于就会运行主方法,测试代码都是写主方法里的这个先明确。
但是还可以由多个类的情况 经过编译以后 想运行哪个类就用命令java 该类名  也是行的.
回复 使用道具 举报
关于为什么要同名,楼上已经说了~我还想说一下可以不同名的情况
在定义主类的时候通常在class前面加上了public,当加了public时,文件名和类名要相同,如果省略public,文件名就可以和类名不同了!

评分

参与人数 1技术分 +1 收起 理由
职业规划-刘倩老师 + 1 赞一个!

查看全部评分

回复 使用道具 举报
秦超 发表于 2012-3-7 11:42
关于为什么要同名,楼上已经说了~我还想说一下可以不同名的情况
在定义主类的时候通常在class前面加上了publ ...

试了下 还真是!
回复 使用道具 举报
秦超 发表于 2012-3-7 11:42
关于为什么要同名,楼上已经说了~我还想说一下可以不同名的情况
在定义主类的时候通常在class前面加上了publ ...

为什么申明为公共类的必须和文件名一样,而不声明为公共的类就可以不一样呢?
回复 使用道具 举报
袁野 黑马帝 2012-3-7 12:23:57
9#
因为一个类中只用一个是用public 修饰的 JVM 就能够找到 main函数 所以 所以文件名和类名相同。。。
回复 使用道具 举报
袁野 发表于 2012-3-7 12:23
因为一个类中只用一个是用public 修饰的 JVM 就能够找到 main函数 所以 所以文件名和类名相同。。。 ...

知道了 谢谢。
回复 使用道具 举报
编译javac,编译的是文件,所以需要在javac之后加上要编译的java文件名!
而执行的时候java,是执行类,所以需要在java后面加上要执行的类名!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马