2010-10-05 7 views

risposta

98

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!"); 
     } 
    } 
} 
+19

+1, per if (false == true) –

+4

+1 Grande esempio :-) – Grodriguez

+0

Cool party game. – Jay

1

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.

Problemi correlati