public class c
{
c()
{
System.out.println("c:No public");
}
}class C
{
C()
{
System.out.println("C:No public");
}
}class BBB
{
}
大家编译下看。
调换c 和 C的位置。
反正只编出前者来。
{
c()
{
System.out.println("c:No public");
}
}class C
{
C()
{
System.out.println("C:No public");
}
}class BBB
{
}
大家编译下看。
调换c 和 C的位置。
反正只编出前者来。
-rw-r--r-- 2008-12-09 02:39 BBB.class
-rw-r--r-- 2008-12-09 02:39 c.class
-rw-r--r-- 340 2008-12-09 02:39 C.class没有问题, 都生成了啊
windows文件名不区分大小写,c.class和C.class被认为是同名的文件,你不可能创建两个的。
要么改名,要么去Unix-like平台上写这样的代码。
public class c{
public static void main(String[] args){
System.out.println("cc:No public");
}}class C{
public static void main(String[] args){
System.out.println("CC:No public");
}
}class BBB
{
}
这样你可以运行java C却不能运行java c,原因就在这。
在windows环境下,编译出前者后,若出现同名类,已经编译好的类不会被覆盖
那十分头疼
这是JAVA设计时没有想到的吗????
哈大家都快成Gasling了。
windows操作系统里cmd 下:
md f 之后建立了一个文件名为f的文件夹
md F 就会出错:同名文件夹已经存在。
同理 javac c.java 里的三个类。
先到先得命名权。实际上是生成三个字节码文件。
但操作系统只给了两个,后边那个不符合操作系统的规定,被强行逐出!!!我的理解对不对,等高手确认!!
Windows平台下,文件系统不区别大小写导致的。。
貌似不是后一个被覆盖啊,电脑上自测的结果是:如果已经产生一个class,那么以后若有相同名称的,只是大小写不同的新class,将无法生成