String dəyişəninə iki formada dəyər mənimsədə bilərik:
String name = "Cavid"; // String poolda saxlanılır
String name = new String("Cavid"); // Yeni obyekt yaradılır
Concatenation
Yadda saxlanılmalı qaydalar:
- Əgər hər iki dəyişən (operand) numeric olarsa,
+toplama əməliyyatını nəzərdə tutur; - Əgər dəyişənlərdən biri
Stringolarsa,+concatenation əməliyyatını nəzərdə tutur; - İfadə soldan sağa doğru hesablanır.
System.out.println(1 + 2); // 3
System.out.println("a" + "b"); // ab
System.out.println("a" + "b" + 3); // ab3
System.out.println(1 + 2 + "c"); // 3c
System.out.println(1 + 2 + "c"+ 1 + 2); // 3c12
int three = 3;
String four = "4";
System.out.println(1 + 2 + three + four); // 64
String s = "1";
s += "2";
s += 3;
System.out.println(s); //123
StringBuilder sb = new StringBuilder("Hello ");
String s = "java!";
String welcome = sb + s;
System.out.println(welcome); // Hello java!
Əgər + operatorunun sağ və ya sol tərəfindəki dəyərlərdən biri String tipindədirsə, run time vaxtı digər dəyər də String`ə çevrilir. Aşağıdakı nümunəyə baxaq:
public static void main(String[] args) {
System.out.print(null + true); // line1
System.out.print(true + null); // line2
System.out.print(null + null); // line3
System.out.print(getString() + true); // line4
}
static String getString() {
return null;
}
line1, line2, line3 – compile olunmur, çünki aydındır ki, true String tip deyil, null isə burada konflikt yaradır, konkret String tipə aid etmək olmaz. Amma line 4 compile olunur, çünki null String tipə mənimsədilib və run edildikdə ekrana nulltrue çap edilir.
Immutability
String immutable dəyişəndir, yəni String obyekti bir dəfə yaradıldısa, sonradan dəyişdirilməyinə icazə verilmir, genişlənə və kiçilə bilməz. Həmçinin Java’da immutable class’lar final’dır.
String s1 = "1";
String s2 = s1.concat("2");
s2.concat("3");
System.out.println(s2); // 12
The String Pool
Ümumiyyətlə, String dəyişənləri ən çox istifadə edilən dəyişənlərdən biridir və ümumi proqramda yaddaşın təxminən 25-40 faizini mənimsəyir. String pool (intern pool) – bütün stringləri toplamaq üçün JVM`də ayrılmış yerdir. String pool özündə ancaq literal dəyərləri tutur (contain).
[topics lang=az]
