Sobes.tech
Junior

Java'da String Pool nima uchun kerak?

sobes.tech AI

AIdan javob

Java'da String Pool, quyidagi uchun zarur:

  • Xotira tejash: String literal'larining takrorlanishini oldini oladi. Agar bir xil qiymatga ega string avvaldan poolda mavjud bo'lsa, unga havola qilinadi.
  • Ishlash tezligini oshirish: String literal'larini taqqoslash (==) tezlashadi, chunki ular mazmuni emas, havolalar taqqoslanadi.

String literal'larini yaratishda (String s = "hello";), JVM avval String Pool'ni tekshiradi. Agar "hello" allaqachon mavjud bo'lsa, s mavjud obyekti bilan havola qiladi. Aks holda, yangi "hello" obyekti poolda yaratiladi va s unga havola qiladi.

new String("hello") konstruktoridan foydalanish har doim yangi String obyekti yaratadi, pooldan mustaqil ravishda. Uni poolga qo'shish uchun intern() metodini chaqish kerak.

// String Pool ishlash misoli

String s1 = "hello"; // Poolni tekshiradi, kerak bo'lsa yaratadi, poolga havola qiladi
String s2 = "hello"; // Poolni tekshiradi, mavjud bo'lganini topadi, ham poolga havola qiladi

System.out.println(s1 == s2); // true - havolalar bir xil

String s3 = new String("hello"); // Yangi ob'ekt yaratadi

System.out.println(s1 == s3); // false - havolalar farq qiladi

String s4 = s3.intern(); // Poolni tekshiradi, s3 mazmuni uchun.
                         // "hello" allaqachon poolda (s1/s2),
                         // s4 pooldagi ob'ektga havola qiladi.

System.out.println(s1 == s4); // true - s1 va s4 bir xil ob'ektga havola qiladi