为什么当java(解释器)区分大小写时,Java编译器(javac)不区分大小写?

问题描述 投票:0回答:4

当我执行 Java 程序时,我注意到 Java 编译器对文件名不区分大小写,而 Java 解释器则区分大小写。

Java解释器区分大小写是很好理解的,因为类文件的名称就是Java代码中定义的类的名称。

Java 编译器不区分大小写有什么充分的理由吗?

java jvm
4个回答
6
投票

Windows 文件系统不区分大小写。
您无法(理智地)在不区分大小写的文件系统上找到区分大小写的文件。

如果您在具有区分大小写的文件系统的 Linux 上运行

javac
,它将区分大小写。


3
投票

这取决于底层文件系统。 Windows 的文件系统不区分大小写,因此当 java 编译器查找“Foo.java”时,操作系统会很高兴地打开“foo.java”。


3
投票

Windows 仍然是儿童和只想上网或做财务文书工作的人的操作系统。但不适合开发者。

近 20 年来,微软在以下方面几乎没有采取任何行动:

  • 文件系统(他们可以将他们喜爱的 NTFS 保留为默认值,并为专业人士提供另一种,不是吗)
  • 命令行,它仍然是我们在 Windows NT 中遇到的同样糟糕的问题。请注意,NT 代表“新技术”,但他们甚至没有成功继承已经存在了 10 或 20 年的技术。

因此,如果您开发 Java,请确保您的类或包名称没有大小写不同。这必然会导致灾难。

帮自己一个忙,在硬盘上腾出一点空间,或者连接一个外部硬盘,然后安装双引导 LINUX。如果必须的话,制作一个虚拟机。一旦安装了您最喜欢的 IDE,您将永远不会回头。一路上你会学到一两点。


3
投票

假设您正在 Windows 或其他具有保留大小写或不区分大小写的文件系统的操作系统上运行编译器。如果您在使用区分大小写的文件系统的操作系统上运行它,您会得到不同的结果。换句话说,它不是编译器,而是操作系统(或者更确切地说,它的文件系统)。

© www.soinside.com 2019 - 2024. All rights reserved.