class ForTest
{
public static void main(String[] args)
{
w: for(int x =0; x<4; x++)
{
q: for(int y=0; y<4; y++)
{
System.out.print("y="+y);
break w;
}
}
}
}
写这个小程序原本是想验证一下break和标号一起使用时跳出循环的效果,但在保存时没注意,把文件保存成了forTest.java ,然后就用javac编译了,编译通过,再用java命令运行时,报错了,
说找不到forTest.class文件。很纳闷,仔细一看才发现生成的class文件是ForTest.class ,是大写的F ,原来java命令在运行.class文件时,是区分文件名的大小写的!
处于好奇,我想知道javac命令是不是也区分.java文件的大小写,就验证了一下,在DOS命令行中输入ForTest.java ,然后编译,结果编译通过,javac命令不区分.java文件的大小写!
通过这个意外的小插曲,我仔细琢磨了一下,得出如下感悟:
1:编译生成的.class文件的文件名和原类名保持一致,而和你保存的.java文件的文件名无关(前提是在没有public修饰符时)。
2:当类名被public 修饰时,保存的.java文件的文件名必须和类名保持一致,否则编译失败。
3:javac命令不区分.java文件名的大小写,大小写一样通过。
4:java 命令区分.class 文件文件名的大小写,写错运行失败。
虽然不是什么很重要的知识点,但是由于自己的疏忽而得到了新的认识,还是很高兴的。怪不得毕老师说,别怕出错,错误越多,知道的越多,此言非虚!
保持一颗好奇心,多实践多动手,知识自然有。
|