O que acontece é que existe um pré processamento. Antes do código ir para o compilador, todos os códigos unicode são traduzidos. Dessa forma, a linha:
String c = "\u000a";
String d = "\u000d";
é vista pelo compilador como:
String c =
;
String d = ";
Isso é legal pq mesmo se vc comentar o código ele não vai funcionar…
Isso pq o compilador vai enxergar como:
Agora, se vc comentar como /* */, já funciona…
Dá uma olhada na JLS:
http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html
, seção 3.10.4:
“Because Unicode escapes are processed very early, it is not correct to write ‘\u000a’ for a character literal whose value is linefeed (LF); the Unicode escape \u000a is transformed into an actual linefeed in translation step 1 (§3.3) and the linefeed becomes a LineTerminator in step 2 (§3.4), and so the character literal is not valid in step 3. Instead, one should use the escape sequence ‘\n’ (§3.10.6). Similarly, it is not correct to write ‘\u000d’ for a character literal whose value is carriage return (CR). Instead, use ‘\r’.”
[]'s
carisio