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