package Feb2017;
public class Ques0216 {
public static void main(String[] args) {
char c1 = '\u005A'; // 字母 Z
char c2 = '\u000a'; // 換行符 - 編譯錯誤!
}
}
為什麼第二行編譯報錯?
\u000a 是換行符(LF)。Java 編譯器在詞法分析階段即將 Unicode 轉義替換為實際字符。代碼實際變為:
char c2 = '
'; // 字符字面量中包含換行,語法錯誤
char c2 = '\n'; // 使用轉義序列
// 或
char c2 = 0x0a; // 直接用整數字面量
\u000d (CR, 回車符)\u0022 (雙引號)\u0027 (單引號)\u005c (反斜杠)均會在編譯早期被替換,破壞字面量結構。原則:字符/字符串字面量中避免使用這些 Unicode 轉義,改用標準轉義序列。