2 源文件基础
2.1 文件名
对于包含类的源文件,文件名由其中恰好一个顶层类的区分大小写的名称加上
.java 扩展名组成。
2.2 文件编码:UTF-8
源文件使用 UTF-8 编码。
2.3 特殊字符
2.3.1 空白字符
除了行终止符序列外,ASCII 水平空格字符(0x20)是源文件中任何位置唯一允许出现的空白字符。这意味着:
- 在
char和字符串字面量以及文本块中,所有其他空白字符均需转义。 - 制表符不用于缩进。
2.3.2 特殊转义序列
对于任何具有特殊转义序列 的字符(\b、\t、\n、\f、\r、\s、\"、\'
和 \\),应使用该转义序列,而不是对应的八进制转义(如 \012)或
Unicode 转义(如 \u000a)。
2.3.3 非 ASCII 字符
对于其余非 ASCII 字符,使用实际的 Unicode 字符(如 ∞)或等价的 Unicode
转义(如
\u221e)均可。选择取决于哪种方式能使代码更易于阅读和理解,但强烈不建议在字符串字面量和注释之外使用
Unicode 转义。
**提示:**在使用 Unicode 转义的情况下,甚至偶尔在使用实际 Unicode 字符时,添加一条解释性注释会非常有帮助。
示例:
| 示例 | 说明 |
String unitAbbrev = "μs"; | 最佳:即使没有注释也非常清晰。 |
String unitAbbrev = "\u03bcs"; // "μs" | 允许,但没有理由这样做。 |
String unitAbbrev = "\u03bcs"; // Greek letter mu, "s" | 允许,但写法笨拙且容易出错。 |
String unitAbbrev = "\u03bcs"; | 差:读者完全不知道这是什么。 |
return '\ufeff' + content; // byte order mark | 好:对不可打印字符使用转义,并在必要时加注释。 |
提示:不要仅仅因为担心某些程序可能无法正确处理非 ASCII 字符就降低代码的可读性。如果真的发生这种情况,那些程序是有问题的,必须修复它们。
Last updated on