logo

Незмінний рядок у Java

Рядок — це неминучий тип змінної під час написання будь-якої прикладної програми. Посилання на рядки використовуються для зберігання різних атрибутів, таких як ім’я користувача, пароль тощо. У Java, Рядкові об’єкти незмінні . Незмінний просто означає незмінний або незмінний.

Після створення об’єкта String його дані або стан не можна змінити, але створюється новий об’єкт String.

Давайте спробуємо зрозуміти концепцію незмінності на прикладі, наведеному нижче:

що таке сплячий режим в java

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 відомий як незмінний.

Незмінний рядок у 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.

рядок містить

Нижче наведено деякі особливості String, які роблять об’єкти String незмінними.

1. Завантажувач класів:

ClassLoader у Java використовує об’єкт String як аргумент. Розглянемо, якщо об’єкт String можна змінювати, значення може бути змінено, а клас, який має бути завантажений, може бути іншим.

Щоб уникнути такого роду неправильного тлумачення, String є незмінним.

2. Thread Safe:

Оскільки об’єкт String є незмінним, нам не потрібно піклуватися про синхронізацію, яка потрібна під час спільного використання об’єкта в кількох потоках.

3. Безпека:

Як ми бачили під час завантаження класу, незмінні об’єкти String уникають подальших помилок, завантажуючи правильний клас. Це робить прикладну програму більш безпечною. Розглянемо приклад банківського ПЗ. Ім’я користувача та пароль не можуть бути змінені будь-яким зловмисником, оскільки об’єкти String є незмінними. Це може зробити прикладну програму більш безпечною.

4. Простір купи:

Незмінність String допомагає мінімізувати використання пам’яті купи. Коли ми намагаємося оголосити новий об’єкт String, JVM перевіряє, чи існує це значення в пулі String чи ні. Якщо він існує, те саме значення присвоюється новому об’єкту. Ця функція дозволяє Java ефективно використовувати простір купи.

Чому клас String є Final у Java?

Причина того, що клас String є остаточним, полягає в тому, що ніхто не може перевизначити методи класу String. Таким чином, він може надавати ті самі функції як новим об’єктам String, так і старим.