首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

【Java 每日一題】20170216:\u000a 導致編譯錯誤的 Unicode 陷阱

     編輯:Java 相關知識

題目代碼


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 轉義,改用標準轉義序列。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved