System.out.println("\1");
Myślałem, że nie skompilowano z powodu nie rozpoznanej sekwencji ucieczki.Co oznacza " 1" w tym ciągu Java?
Co dokładnie oznacza "\1"
?
System.out.println("\1");
Myślałem, że nie skompilowano z powodu nie rozpoznanej sekwencji ucieczki.Co oznacza " 1" w tym ciągu Java?
Co dokładnie oznacza "\1"
?
Jest to ósemkowa sekwencja ucieczki, wymieniona w section 3.10.6 JLS. Tak więc na przykład:
String x = "\16";
odpowiada:
String x = "\u000E";
(jak ósemkowej 16 = Hex E.)
tak \1
nas U + 0001, "Start z pozycji" charakter.
Ośmioro sekwencje ucieczki są bardzo rzadko używane w Javie na moim doświadczeniu i osobiście unikam ich, jeśli to możliwe. Gdy chcę określić znak za pomocą numerycznej sekwencji specjalnej, zawsze używam \uxxxx
.
w Javie jest następujące wartości
\u0001
Java jest jednym z tych języków, które sprawiają, że przysięgam obficie po trafieniu „przypadkowe” błędy to ma. Czy wiesz, że Java interpretuje ucieczki znaków jako * literalną * postać kodu źródłowego? Cóż, nie stanowi to problemu, dopóki nie spróbujesz uciec powrotowi z karetki ... wtedy Java myśli, że utknąłeś w nowym kodzie źródłowym, kiedy naprawdę tego nie chcesz. –
@PP .: To zależy od tego, którą postać uciekniesz. Na przykład komentarz '// To \ n jest w porządku' jest w porządku, ale' // To \ u000a nie jest' nie zostanie skompilowane. –
Twoja druga linia kodu nie jest kompilowana (przynajmniej na moim komputerze): * "literał łańcuchowy nie jest poprawnie zamknięty podwójnym cudzysłowem" *. – sp00m