Middle
Java-da String tipi dəyəri niyə dəyişdirilə bilməz?
sobes.tech Süni İntellekt
AI-dan cavab
Java'da String tipinin değeri dəyişməz (immutable) olur, çünki:
- String Pool-un səmərəli istifadəsi: JVM yaddaşı qənaət etmək üçün string havuzunu idarə edir. Dəyişməz stringlər bir neçə dəyişənə eyni obyektə istinad etməyə imkan verir, bu da birinin dəyişdirilməsi digərinə təsir etməz.
- İş parçacığı təhlükəsizliyi: String obyektləri dəyişməz olduğundan, onları xarici sinxronizasiya olmadan təhlükəsiz şəkildə iş parçacqları arasında paylaşmaq mümkündür. Bu, çox iş parçacığı ilə işləməyi sadələşdirir.
- Kolleksiyalarda açar kimi istifadə:
Stringtez-tezHashMapvəHashSetkimi kolleksiyalarda açar kimi istifadə olunur. Dəyişməzlik obyektin hash kodunun ömrü boyunca sabit qalmasını təmin edir, bu da bu məlumat strukturlarının düzgün işləməsi üçün vacibdir. Açar kimi istifadə olunan obyektin dəyişdirilməsi onların daxili quruluşunu pozar. - Təhlükəsizlik: String obyektləri vacib məlumatları, məsələn, fayl adları, şəbəkə ünvanları və şifrələri təmsil etmək üçün istifadə olunur. Dəyişməzlik bu dəyərlərin təsadüfi və ya zərərli dəyişdirilməsinin qarşısını alır.
String dəyərinin "dəyişdiyi" görünürsə (məsələn, stringlərin birləşdirilməsi zamanı), əslində yeni String obyekti yaradılır.
// Havuzda orijinal string
String s1 = "Hello";
// Yeni obyekt "Hello World" yaradılır, s1 "Hello"-ya istinad edir
String s2 = s1 + " World";
Tez-tez string dəyişiklikləri tələb edən əməliyyatlar üçün, StringBuilder (iş parçacığı təhlükəsiz deyil) və ya StringBuffer (iş parçacığı təhlükəsiz) kimi dəyişdirilə bilən sinflər istifadə olunur.