Czy istnieje różnica między pojedynczymi i podwójnymi cudzysłowami w Javie?
101
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
lub sekwencja ucieczki, a nawet sekwencja ucieczki Unicode:
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:
Nie ma potrzeby ucieczki przed podwójnym cudzysłowem w apostrofach.
Poniższy wiersz jest legalny w Javie:
źródło
Rozważmy następujące wiersze kodów (Java):
1) Pierwszy kierunek jest połączeniem
H
iA
która spowodujeHA
(ciągiem znaków)2) Po drugie dodajemy wartości dwóch znaków, które zgodnie z tabelą ASCII
H
= 72 ia
= 97, co oznacza, że dodajemy,72+97
że jest jak('H'+'a')
.3) Rozważmy inny przypadek, w którym mielibyśmy:
W tym przypadku mamy do czynienia z konkatenacją String
A
i char,N
co da w wynikuAN
.źródło
Pojedynczy cudzysłów oznacza znak, a podwójny cudzysłów oznacza ciąg.
char c = 'c';
„c” -----> c jest znakiem
String s = "stackoverflow";
"stackoverflow" ------> stackoverflow to ciąg znaków (tj. kolekcja, jeśli znaki)
źródło