Java'da String növünün dəyəri niyə dəyişməzdir?
sobes.tech Süni İntellekt
AI-dan cavab
Java-da String dəyəri bir neçə səbəbə görə dəyişməzdir:
-
İş parçacığı təhlükəsizliyi (Thread Safety): Dəyişməz obyektlər bir neçə iş parçacığı tərəfindən eyni vaxtda təhlükəsiz istifadə oluna bilər və xarici sinxronizasiya tələb etmir.
String-in vəziyyəti yaradıldıqdan sonra dəyişdirilə bilmədiyi üçün, iş parçacqları arasında oxuma və ya ötürmə zamanı yarış şəraiti riski yoxdur.// Nümunə: iki iş parçacığı eyni string-ə müraciət edir String sharedString = "Hello"; // İş parçacığı 1 sharedString-dən təhlükəsiz istifadə edə bilər new Thread(() -> { System.out.println(sharedString.toUpperCase()); }).start(); // İş parçacığı 2 də sharedString-dən təhlükəsiz istifadə edə bilər new Thread(() -> { System.out.println("Uzunluq: " + sharedString.length()); }).start(); -
Effektivlik (Pooling və Sharing): Dəyişməzliyi sayəsində JVM yaddaşdan səmərəli istifadə etmək üçün string havuzundan istifadə edə bilər. Əgər bir neçə dəyişən eyni string dəyərinə istinad edirsə, onlar eyni obyektə işarə edə bilər, bu yaddaş qənaət edir.
String s1 = "World"; // Havuzda "World" obyekti yaradılır String s2 = "World"; // Eyni obyektə işarə edir String s3 = new String("World"); // Yeni obyekt yaradılır System.out.println(s1 == s2); // true - eyni obyektə işarə edir System.out.println(s1 == s3); // false - fərqli obyektlərə işarə edir -
Xəritədə açar kimi istifadə:
Stringtez-tez hash xəritələrində (HashMap) açar kimi istifadə olunur. Əgər string dəyişkən olsaydı, onun hash kodu dəyişə bilər və bu, uyğun dəyəri tapmağı çətinləşdirərdi. Dəyişməzlik hash kodunun sabit qalmasını təmin edir.import java.util.HashMap; import java.util.Map; Map<String, Integer> ages = new HashMap<>(); ages.put("Alice", 30); // Əgər "Alice" dəyişkən olsaydı, axtarış uğursuz ola bilərdi System.out.println(ages.get("Alice")); // 30 -
Təhlükəsizlik (Security): Stringlər fayl adları, şəbəkə ünvanları və ya istifadəçi şifrələri kimi gizli məlumatların saxlanması üçü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 və təhlükəsizliyi artırır.
Bu amillər String-i Java-da əsas və etibarlı məlumat növü edir.