Sobes.tech
Junior

Java'da satrlar havzasi nima?

sobes.tech AI

AIdan javob

String Pool (String Pool) JVM ning Heap (Yig'indi) hududida joylashgan va satrli literralarning saqlanadigan hududdir. JVM satrli literralarga duch kelganda, avvalo, ushbu poolni tekshiradi. Agar satr oldin mavjud bo'lsa, mavjud ob'ektga havola qaytariladi. Aks holda, yangi satr ob'ekti poolda yaratiladi va unga havola qaytariladi.

Afzalliklar:

  • Xotira tejash: Bir nechta havolalar bir xil satr ob'ektiga poolda murojaat qilishi mumkin.
  • Ishlash tezligi: Pooldagi satrlar uchun havolalarni taqqoslash (==) satrlarning mazmunini taqqoslashga (equals()) qaraganda tezroq.

Misol:

// Poolda satr yaratadi (agar hali mavjud bo'lmasa)
String s1 = "hello";

// Pooldagi "hello" ob'ektiga havolani qaytaradi
String s2 = "hello";

// s1 va s2 bir xil ob'ektga murojaat qiladi
System.out.println(s1 == s2); // true chiqaradi

// Heapda yangi "hello" satr ob'ekti yaratiladi, poolda emas
String s3 = new String("hello");

// s1 va s3 turli ob'ektlarga murojaat qiladi
System.out.println(s1 == s3); // false chiqaradi

// Satrlarning mazmuni bir xil
System.out.println(s1.equals(s3)); // true chiqaradi

intern() metodi, new String() yordamida yaratilgan satrni aniq poolga qo'shish yoki ayni mazmunda bo'lgan mavjud satrga havolani olish uchun ishlatilishi mumkin.

// Heapda yangi "world" satr ob'ekti yaratiladi
String s4 = new String("world");

// "world" ni poolga qo'shadi (agar hali mavjud bo'lmasa) va havolani qaytaradi
String s5 = s4.intern();

// Poolda satr yaratadi (hozir s5 ko'rsatadigan ob'ekt bilan bir xil ob'ektga havola)
String s6 = "world";

// s5 va s6 bir xil ob'ektga murojaat qiladi
System.out.println(s5 == s6); // true chiqaradi