2013-02-19 13 views
16

Widziałem ten char zdefiniowany jako char ch = '\117'Dlaczego " 117" jest prawidłowym literałem znaków w Javie?

Jakie reprezentacji jest '\117' w?

wiem escaped-sequence jest '\n', na przykład, albo unicode jest `\udddd', gdzie d to pojedyncza cyfra hex, ale nigdy nie widziałem czegoś takiego jak '\117' w całym moim życiu! Co zaskakujące, kompiluje! (I wyjście to O)

+11

Zobacz [Sekwencje Escape dla postaci i literałów ciągów] (http://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html # jls-3.10.6). – EJP

+1

To jest notacja ósemkowa. Patrz [Dlaczego liczba ósemkowa w Javie wzrasta tylko do 255?] (Http://stackoverflow.com/q/9543026/111424), szczególnie [odpowiedź roboffa mayoffa] (http://stackoverflow.com/a/9543611/111424). Prawdopodobnie chodzi o kompatybilność ze starszymi językami i programistami. –

Odpowiedz

8

Jest w postaci ósemkowej, zatrzymania z C/C++.

3

Dzieje się tak dlatego, że jest to ósemkowa reprezentacja znaku captive O.

Jeśli spróbujesz wydrukować swoją char ch='\117';, zobaczysz, że drukuje ona O.

2

Jest to wartość Octal do znaku "O", kiedy nie System.out.println (..) Mam ten wynik:

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

wyjściowa:

Char is : O 
+1

To coś więcej, jest to wartość ASCII ósemkowa. – EJP

+0

Przepraszam, zaktualizowałem to samo :) @EJP –

Powiązane problemy