logo

Неизменен низ в Java

Низът е неизбежен тип променлива, докато пишете всяка приложна програма. Препратките към низове се използват за съхраняване на различни атрибути като потребителско име, парола и т.н. В Java, Низовите обекти са неизменни . Неизменен просто означава непроменим или непроменим.

След като String обектът бъде създаден, неговите данни или състояние не могат да бъдат променени, но се създава нов String обект.

Нека се опитаме да разберем концепцията за неизменност чрез примера, даден по-долу:

typescript foreach цикъл

Testimmutablestring.java

 class Testimmutablestring{ public static void main(String args[]){ String s='Sachin'; s.concat(' Tendulkar');//concat() method appends the string at the end System.out.println(s);//will print Sachin because strings are immutable objects } } 
Тествайте сега

Изход:

 Sachin 

Сега може да се разбере от диаграмата, дадена по-долу. Тук Sachin не се променя, но се създава нов обект със Sachin Tendulkar. Ето защо String е известен като immutable.

Неизменен низ в Java

Както можете да видите на фигурата по-горе, два обекта са създадени, но с референтната променлива все още препраща към „Sachin“, а не към „Sachin Tendulkar“.

Но ако изрично го присвоим на референтната променлива, той ще препраща към обекта „Sachin Tendulkar“.

Например:

Testimmutablestring1.java

 class Testimmutablestring1{ public static void main(String args[]){ String s='Sachin'; s=s.concat(' Tendulkar'); System.out.println(s); } } 
Тествайте сега

Изход:

 Sachin Tendulkar 

В такъв случай s сочи към „Sachin Tendulkar“. Моля, обърнете внимание, че обектът Sachin все още не е променен.

Защо String обектите са неизменни в Java?

Тъй като Java използва концепцията за низов литерал. Да предположим, че има 5 референтни променливи, всички се отнасят към един обект „Sachin“. Ако една референтна променлива промени стойността на обекта, тя ще бъде засегната от всички референтни променливи. Ето защо String обектите са неизменни в Java.

кои месеци са q3

Следват някои функции на String, които правят String обектите неизменни.

1. ClassLoader:

ClassLoader в Java използва String обект като аргумент. Помислете, че ако обектът String може да се променя, стойността може да бъде променена и класът, който трябва да бъде зареден, може да е различен.

За да се избегне този вид погрешно тълкуване, String е неизменен.

2. Thread Safe:

Тъй като обектът String е неизменен, не е нужно да се грижим за синхронизацията, която е необходима, докато споделяме обект в множество нишки.

3. Сигурност:

Както видяхме при зареждането на клас, неизменните String обекти избягват допълнителни грешки, като зареждат правилния клас. Това води до по-сигурна приложна програма. Помислете за пример за банков софтуер. Потребителското име и паролата не могат да бъдат променени от никой нарушител, тъй като String обектите са неизменни. Това може да направи приложната програма по-сигурна.

4. Хийп пространство:

Неизменността на String помага да се сведе до минимум използването на хийп паметта. Когато се опитваме да декларираме нов String обект, JVM проверява дали стойността вече съществува в String пула или не. Ако съществува, същата стойност се присвоява на новия обект. Тази функция позволява на Java да използва ефективно пространството на купчината.

Защо класът String е Final в Java?

Причината класът String да е окончателен е, че никой не може да отмени методите на класа String. Така че да може да предоставя същите характеристики на новите String обекти, както и на старите.