Java'da String turining qiymati nima uchun o'zgarmas?
sobes.tech AI
AIdan javob
Java'da String qiymati bir nechta sabablarga ko'ra o'zgarmas (immutable):
-
Ip uchun xavfsizlik (Thread Safety): O'zgarmas obyektlar bir nechta iplar tomonidan xavfsiz foydalanilishi mumkin, tashqi sinxronizatsiya talab qilinmaydi.
Stringholati yaratildiqdan so'ng o'zgarmasligi sababli, iplar o'rtasida satrni o'qish yoki uzatishda raqobat shartlari xavfi yo'q.// Misol: ikkita ip bir xil satrga murojaat qilmoqda String sharedString = "Hello"; // Ip 1 sharedString'dan xavfsiz foydalanishi mumkin new Thread(() -> { System.out.println(sharedString.toUpperCase()); }).start(); // Ip 2 ham sharedString'dan xavfsiz foydalanishi mumkin new Thread(() -> { System.out.println("Uzunligi: " + sharedString.length()); }).start(); -
Samardorlik (Pooling va Sharing): O'zgarmasligi sababli JVM xotira foydalanishni optimallashtirish uchun satrlar havuzidan foydalanishi mumkin. Bir nechta o'zgaruvchilar bir xil satr qiymatiga murojaat qilsa, ular havuzdagi bir xil obyektga murojaat qilishi mumkin, bu xotira tejashga yordam beradi.
String s1 = "World"; // Havuzda "World" obyektini yaratadi String s2 = "World"; // Havuzdagi bir xil obyektga murojaat qiladi String s3 = new String("World"); // Yangi obyekt tashqarida yaratiladi System.out.println(s1 == s2); // true - bir xil obyektga murojaat qilmoqda System.out.println(s1 == s3); // false - turli obyektlarga murojaat qilmoqda -
Map'da kalit sifatida foydalanish:
Stringko'pincha hash xaritalarida (HashMap) kalit sifatida ishlatiladi. Agar satr o'zgarmas bo'lsa, uning hash kodi o'zgarishi mumkin, bu esa mos qiymatni topishni imkonsiz qiladi. O'zgarmaslik hash kodining doimiy qolishini ta'minlaydi.import java.util.HashMap; import java.util.Map; Map<String, Integer> ages = new HashMap<>(); ages.put("Alice", 30); // Agar "Alice" o'zgarmas bo'lsa, "Alice" bo'yicha qidiruv muvaffaqiyatsiz bo'lishi mumkin System.out.println(ages.get("Alice")); // 30 -
Xavfsizlik (Security): Satrlar fayl nomlari, tarmoq manzillari yoki foydalanuvchi parollari kabi maxfiy ma'lumotlarni saqlash uchun ishlatiladi. O'zgarmasligi bu qiymatlarning tasodifan yoki zararli o'zgarishlardan himoya qiladi, xavfsizlikni oshiradi.
Ushbu omillar Stringni Java'da asosiy va ishonchli ma'lumot turi qiladi.