Java'da tek ve çift tırnak arasında bir fark var mı?
Yanıtlar:
Değişmez char
s için tek tırnak, değişmez s için çift tırnak kullanın String
, örneğin:
char c = 'a';
String s = "hello";
Başka hiçbir şekilde kullanılamazlar (örneğin Python'da olduğu gibi).
int
, bu tür bağlamlarda gerçek kesme işaretleri otomatik olarak kullanılır . Yani olması gerekmiyor char
. Bazı olumsuz oyları hak etmek ... basit.
Karakter, tek bir UTF-16 karakteridir, yani bir harf, bir rakam, bir noktalama işareti, bir sekme, bir boşluk veya benzeri bir şeydir.
Bir karakter değişmezi, bunun gibi tek tırnak işaretleri içine alınmış tek bir karakterdir
char myCharacter = 'g';
veya bir kaçış dizisi veya hatta bir unicode kaçış dizisi:
char a = '\t'; // Escape sequence: tab
char b = '\177' // Escape sequence, octal.
char c = '\u03a9' // Unicode escape sequence.
Unicode kaçış dizilerinin derleme sırasında çok erken işlendiğini ve bu nedenle '\ u00A' kullanımının bir derleyici hatasına yol açacağını belirtmek gerekir. Özel semboller için bunun yerine kaçış dizilerinin kullanılması daha iyidir, yani "\ u00A" yerine "\ n".
Çift tırnak String
, \"
aksi takdirde dizeyi sonlandıracağı dizelerin içinde bir "çift tırnak kaçış dizisi" ( ) kullanmanız gerekir.
Örneğin:
System.out.println("And then Jim said, \"Who's at the door?\"");
Tek tırnak içindeki çift tırnaktan kaçmak gerekli değildir.
Aşağıdaki satır Java'da yasaldır:
char doublequote = '"';
Şu kod satırlarını (Java) ele alalım:
System.out.println("H"+"A"); //HA
System.out.println('H'+'a'); //169
1) İlk satır, bitiştirilmesidir H
ve A
bu HA
(Dize değişmezi) ile sonuçlanacaktır.
2) İkincisi, ASCII Tablosuna göre H
= 72 ve a
= 97 olan iki karakterin değerlerini ekliyoruz, 72+97
bu da benzerini eklediğimiz anlamına geliyor ('H'+'a')
.
3) Sahip olacağımız başka bir durumu ele alalım:
System.out.println("A"+'N');//AN
Bu durumda String A
ve char'ın bitiştirilmesi ile N
sonuçlanacak AN
.
Tek tırnak karakteri, çift tırnak ise dizeyi belirtir.
karakter c = 'c';
'c' -----> c bir karakterdir
Dize s = "stackoverflow";
"stackoverflow" ------> stackoverflow bir dizedir (yani karakter ise koleksiyon)