Несколько дней назад, я был задан вопрос о выходе этой программы:Unicode поведение побег в программах Java
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
- это юникод для "
, но я думал, что это "
будет экранировано и представляет только один номер "
буквально, без особого значения. И в самом деле, Java каким-то образом проанализирован эту строку следующим образом:
System.out.println("a".length() + "b".length());
Я не могу обернуть мою голову вокруг этого странного поведения, почему Unicode ускользает не ведут себя как обычные управляющие последовательности?
Обновление По-видимому, это был один из мозговых дразнилок из книги Java Puzzlers: Traps, Pitfalls, and Corner Cases, написанной Джошуа Блохом и Нилом Гафтером. Более конкретно, вопрос был связан с Puzzle 14: Escape Rout.
http://www.javajee.com/unicode-escapes-in-java – ShrtTth