Czy istnieje różnica między pojedynczymi i podwójnymi cudzysłowami w Javie?
Odpowiedzi:
Użyj apostrofów dla literału char
s, cudzysłowu podwójnego dla literału String
s, na przykład:
char c = 'a';
String s = "hello";
Nie można ich używać w żaden inny sposób (jak na przykład w Pythonie).
int
takich kontekstów. Więc nie musi tak być char
. Zasługuje na kilka negatywnych opinii ... uproszczone.
Znak to pojedynczy znak UTF-16, czyli litera, cyfra, znak interpunkcyjny, tabulator, spacja lub coś podobnego.
Literał char to pojedynczy znak ujęty w pojedyncze cudzysłowy, takie jak ten
char myCharacter = 'g';
lub sekwencja ucieczki, a nawet sekwencja ucieczki Unicode:
char a = '\t'; // Escape sequence: tab
char b = '\177' // Escape sequence, octal.
char c = '\u03a9' // Unicode escape sequence.
Warto zauważyć, że sekwencje unikowe Unicode są przetwarzane bardzo wcześnie podczas kompilacji, a zatem użycie „\ u00A” doprowadzi do błędu kompilatora. W przypadku symboli specjalnych lepiej jest zamiast tego używać sekwencji ucieczki, tj. „\ N” zamiast „\ u00A”.
Ponieważ podwójne cudzysłowy są for String
, musisz użyć „sekwencji ucieczki podwójnego cudzysłowu” ( \"
) wewnątrz łańcuchów, gdzie w przeciwnym razie zakończyłby ciąg.
Na przykład:
System.out.println("And then Jim said, \"Who's at the door?\"");
Nie ma potrzeby ucieczki przed podwójnym cudzysłowem w apostrofach.
Poniższy wiersz jest legalny w Javie:
char doublequote = '"';
Rozważmy następujące wiersze kodów (Java):
System.out.println("H"+"A"); //HA
System.out.println('H'+'a'); //169
1) Pierwszy kierunek jest połączeniem H
i A
która spowoduje HA
(ciągiem znaków)
2) Po drugie dodajemy wartości dwóch znaków, które zgodnie z tabelą ASCII H
= 72 i a
= 97, co oznacza, że dodajemy, 72+97
że jest jak ('H'+'a')
.
3) Rozważmy inny przypadek, w którym mielibyśmy:
System.out.println("A"+'N');//AN
W tym przypadku mamy do czynienia z konkatenacją String A
i char, N
co da w wyniku AN
.