Perché non posso usare \ u000D e \ u000A come CR e LF in Java? Si sta dando un errore quando compilo il codice:Perché non posso usare u000D e u000A come CR e LF in Java?
illegal line end in character literal
Perché non posso usare \ u000D e \ u000A come CR e LF in Java? Si sta dando un errore quando compilo il codice:Perché non posso usare u000D e u000A come CR e LF in Java?
illegal line end in character literal
fughe Unicode sono pre-elaborati prima che il compilatore viene eseguito. Pertanto, se si mette \u000A
in una stringa costante come questa:
String someString = "foo\u000Abar";
Sarà compilato esattamente come se hai scritto:
String someString = "foo
bar";
Stick per \r
(ritorno a capo; 0x0D
) e \n
(linea feed; 0x0A
)
Bonus: Puoi sempre divertirti con questo, soprattutto considerando i limiti della maggior parte evidenziatori di sintassi. La prossima volta che hai un secondo, provare a eseguire questo codice:
public class FalseIsTrue {
public static void main(String[] args) {
if (false == true) { //these characters are magic: \u000a\u007d\u007b
System.out.println("false is true!");
}
}
}
perché rientra nel range di Unicode Control characters
Che è U+0000–U+001F
e U+007F
.
caratteri di controllo Unicode vengono utilizzati per controllare l'interpretazione o visualizzazione del testo, ma questi personaggi stessi non hanno alcuna rappresentazione spaziale visiva o .
Possono essere sfuggito utilizzando \
come descritto nella risposta precedente da @ Marco
DA RFC:
2,5. Stringhe
La rappresentazione di stringhe è simile a convenzioni utilizzate nella famiglia C dei linguaggi di programmazione. Una stringa inizia e termina con i voti . Tutti i caratteri Unicode possono essere collocati all'interno delle virgolette eccezione per i personaggi che devono essere sfuggito: virgoletta, invertire Solidus, e i caratteri di controllo (U + 0000 e U + 001F).
Qualsiasi carattere può essere sfuggito a.
+1, per if (false == true) –
+1 Grande esempio :-) – Grodriguez
Cool party game. – Jay