2013-05-21 17 views
24

W języku Java: \' oznacza znak pojedynczego cudzysłowu (pojedynczy cudzysłów), a \" oznacza znak podwójnego cudzysłowu (podwójny cudzysłów).Czy w Javie powinienem uciec od pojedynczego cudzysłowu (') w łańcuchu (podwójny cytat)?

Tak, String s = "I\'m a human."; działa dobrze.

Jednak String s = "I'm a human." nie powoduje również błędów kompilacji.

Podobnie działa char c = '\"';, ale działa również char c = '"';.

W Javie, który jest lepszy w użyciu? W formacie HTML lub CSS, takie rzeczy style="font-family:'Arial Unicode MS';" są częściej (a do takich znaczników, myślę, że to jedyny sposób, aby użyć cudzysłowu), ale w języku Java, zwykle widział ludzie używają znaków ewakuacyjnych jak "I\'m a human."

+2

Nie użyłbym ukośnik, chyba że jest to uzasadnione. Więc '" Jestem człowiekiem. "' Jest w porządku. – vikingsteve

+0

Nie jestem pewien co do pojedynczych cudzysłowów w ciągach znaków, ponieważ nie jestem konsekwentny, używając jednego nad drugim. Ale polecam unikanie podwójnych cudzysłowów w znakach, ponieważ czasem później decydujesz się zmienić to, co chcesz zrobić i zmienić zmienną postaci na ciąg. np. kiedy dowiadujesz się, że chcesz zastąpić więcej niż jeden znak przez 'String.replace()' –

+1

Czy próbowałeś go przetestować? –

Odpowiedz

32

nie robić musisz uciec z postaci ' w ciągu znaków (owiniętym w ") i nie musisz uciekać od znaku " w znaku (owiniętym w ').

+0

ale możesz i jest to zgodne z prawem, czy to, co mówisz, prawda? – Mishax

+0

@Mishax to dość oczywiste. Jedynym zastosowaniem znaku escape jest ** informowanie ** o tym, że kompilator nie traktuje znaku ("/") jako znaku zamykającego. – Bateman

+1

@ Bateman Nie zgadzam się z twoim stwierdzeniem - znak escape może być użyty w literale String z \ n w celu wskazania nowej linii lub \ t w przypadku karty Moja wskazówka dla Cory Kendall polegała na tym, że jego odpowiedź nie zawierała formalnych określeń, takich jak "legalny, ale opcjonalny", co byłoby bardziej precyzyjne: – Mishax

10

Najlepiej jest tylko uciec od cytatów, kiedy trzeba - jeśli możesz uciec bez ucieczki, to zrób to!

Jedyne czasy powinny trzeba uciec się, gdy próbuje umieścić " wewnątrz łańcucha lub ' w charakterze:

String quotes = "He said \"Hello, World!\""; 
char quote = '\''; 
+15

Umm ... gdzie to jest powiedzieć, że jest to "najlepsza praktyka"? Czy po prostu zmieniasz swoje osobiste preferencje jako "najlepszą praktykę"? –