当我执行 Java 程序时,我注意到 Java 编译器对文件名不区分大小写,而 Java 解释器则区分大小写。
Java解释器区分大小写是很好理解的,因为类文件的名称就是Java代码中定义的类的名称。
Java 编译器不区分大小写有什么充分的理由吗?
Windows 文件系统不区分大小写。
您无法(理智地)在不区分大小写的文件系统上找到区分大小写的文件。
如果您在具有区分大小写的文件系统的 Linux 上运行
javac
,它将区分大小写。
这取决于底层文件系统。 Windows 的文件系统不区分大小写,因此当 java 编译器查找“Foo.java”时,操作系统会很高兴地打开“foo.java”。
Windows 仍然是儿童和只想上网或做财务文书工作的人的操作系统。但不适合开发者。
近 20 年来,微软在以下方面几乎没有采取任何行动:
因此,如果您开发 Java,请确保您的类或包名称没有大小写不同。这必然会导致灾难。
帮自己一个忙,在硬盘上腾出一点空间,或者连接一个外部硬盘,然后安装双引导 LINUX。如果必须的话,制作一个虚拟机。一旦安装了您最喜欢的 IDE,您将永远不会回头。一路上你会学到一两点。
假设您正在 Windows 或其他具有保留大小写或不区分大小写的文件系统的操作系统上运行编译器。如果您在使用区分大小写的文件系统的操作系统上运行它,您会得到不同的结果。换句话说,它不是编译器,而是操作系统(或者更确切地说,它的文件系统)。