前幾天,有人問我關於這個程序的輸出:的Unicode逃逸行爲
public static void main(String[] args) {
// \u0022 is the Unicode escape for double quote (")
System.out.println("a\u0022.length() + \u0022b".length());
}
我首先想到的是這個程序應該打印a\u0022.length() + \u0022b
長度,這是16
,但奇怪的是,它印2
。我知道\u0022
是"
的Unicode,但我認爲這"
將被轉義並且僅代表一個"
文字,沒有特別的含義。而在現實中,Java的莫名其妙解析這個字符串如下:
System.out.println("a".length() + "b".length());
我不能換我的頭周圍這個怪異的行爲,爲什麼Unicode轉義字符不表現爲正常的轉義序列?
更新顯然,這是Joshua Bloch和Neal Gafter編寫的Java Puzzlers: Traps, Pitfalls, and Corner Cases書的腦筋急轉彎之一。更具體地說,這個問題涉及到拼圖14:逃避路途。
http://www.javajee.com/unicode-escapes-in-java – ShrtTth