Чаро арзиши навъи String дар Java тағйирнопазир аст?
sobes.tech AI
Ҷавоб аз AI
Маънии String дар Java аз чанд сабаб беназорат аст:
-
Бехатарии равандҳо (Thread Safety): Объектҳои беназорат метавонанд бехатарона дар чанд раванд истифода шаванд, бе ниёз ба синхронизатсия. Азбаски ҳолати
Stringпас аз эҷод кардан тағир намеёбад, хатари ҳолати рақобат дар хондан ё интиқоли сатр байни равандҳо вуҷуд надорад.// Мисол: ду раванд ба як сатр дастрасӣ доранд String sharedString = "Hello"; // Раванд 1 метавонад бехатарона истифода барад sharedString new Thread(() -> { System.out.println(sharedString.toUpperCase()); }).start(); // Раванд 2 низ метавонад бехатарона истифода барад sharedString new Thread(() -> { System.out.println("Дарозӣ: " + sharedString.length()); }).start(); -
Самаранокӣ (Pooling ва Sharing): Аз сабаби беназоратӣ, JVM метавонад истифодаи хотирасозиро бо истифода аз пулҳои сатрҳо (String Pool) оптимизатсия кунад. Агар чанд тағирёбанда ба як арзиш ишора кунанд, онҳо метавонанд ба як объект дар пул ишора кунанд, ки ин хотирасозиро сарфа мекунад.
String s1 = "World"; // Эҷоди объект "World" дар пул String s2 = "World"; // Ишора ба ҳамон объект дар пул String s3 = new String("World"); // Эҷоди объект нав дар берун аз пул System.out.println(s1 == s2); // дуруст - ишора ба як объект System.out.println(s1 == s3); // нодуруст - ишора ба объектҳои гуногун -
Истифода ҳамчун калид дар Map:
Stringаксар вақт ҳамчун калид дар харитаҳои ҳеш (HashMap) истифода мешавад. Агар сатр тағирёбанда бошад, хеш-кодаш пас аз илова кардан ба харита тағир ёфтан мумкин аст, ки ёфтанро номумкин мекунад. Беназоратӣ кафолат медиҳад, ки хеш-код доимӣ мемонад.import java.util.HashMap; import java.util.Map; Map<String, Integer> ages = new HashMap<>(); ages.put("Alice", 30); // Агар "Alice" тағирёбанда бошад, ҷустуҷӯ дар "Alice" метавонад натавонад кор кунад System.out.println(ages.get("Alice")); // 30 -
Бехатарӣ (Security): Сатрҳо барои нигоҳдории маълумоти махфӣ, ба монанди номҳои файлҳо, суроғаи шабакавӣ ё паролҳои корбар истифода мешаванд. Беназоратӣ пешгирӣ мекунад, ки ин арзишҳо пас аз оғоз тағир ёбанд, ки бехатариро баланд мебардорад.
Ин омилҳо String-ро ҳамчун навъе асосӣ ва боэътимод дар Java месозанд.