2013-02-19 15 views
16

Ho visto questo char definito come char ch = '\117'Perché ' 117' è un carattere letterale valido in Java?

Che tipo di rappresentazione è '\117' in?

So escaped-sequence è '\n', per esempio, o unicode è `\udddd', dove d è una singola cifra esadecimale, ma non ho mai visto una cosa come '\117' in tutta la mia vita! Sorprendentemente, lo fa compilare! (E l'output è O)

+11

Vedere [Sequenze di escape per caratteri e stringhe letterali] (http://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html # JLS-3.10.6). – EJP

+1

Questa è una notazione ottale. Vedi [Perché gli escape ottali di Java arrivano solo a 255?] (Http://stackoverflow.com/q/9543026/111424), in particolare [la risposta di rob mayoff] (http://stackoverflow.com/a/9543611/111424). Probabilmente è compatibile con le lingue e i programmatori più vecchi. –

risposta

8

È in ottale, un residuo da C/C++.

3

Ciò è dovuto al fatto che è la rappresentazione ottale del carattere o O.

Se si tenta di stampare il proprio char ch='\117';, vedrete che stampa O.

2

Si tratta di un valore ottale per carattere "O", quando ho fatto System.out.println (..) Ho ottenuto questo output:

char ch = '\117'; 
System.out.println("Char is: " + ch); 

uscita:

Char is : O 
+1

È più di questo, è un valore ASCII in ottale. – EJP

+0

Siamo spiacenti, aggiornato lo stesso :) @EJP –

Problemi correlati