logo

Непроменљиви стринг у Јави

Стринг је незаобилазан тип променљиве током писања било ког апликативног програма. Референце стрингова се користе за чување различитих атрибута као што су корисничко име, лозинка, итд. У Јави, Стринг објекти су непроменљиви . Непроменљив једноставно значи непроменљив или непроменљив.

Када се објекат Стринг креира, његови подаци или стање се не могу променити, али се креира нови објекат Стринг.

Покушајмо да разумемо концепт непроменљивости на примеру датом у наставку:

нфа за дфа

Тестиммутаблестринг.јава

 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 

Сада се то може разумети дијаграмом датим у наставку. Овде се Сацхин не мења, али се ствара нови објекат са Сацхином Тендулкаром. Због тога је Стринг познат као непроменљив.

Непроменљиви стринг у Јави

Као што можете видети на горњој слици да су креирана два објекта али с референтна варијабла се и даље односи на 'Сацхин', а не на 'Сацхин Тендулкар'.

Али ако је експлицитно доделимо референтној променљивој, она ће се односити на објекат 'Сачин Тендулкар'.

На пример:

Тестиммутаблестринг1.јава

 class Testimmutablestring1{ public static void main(String args[]){ String s='Sachin'; s=s.concat(' Tendulkar'); System.out.println(s); } } 
Тестирајте одмах

Излаз:

лог4ј
 Sachin Tendulkar 

У таквом случају, с указује на 'Сачин Тендулкар'. Имајте на уму да још увек Сацхин објекат није измењен.

Зашто су Стринг објекти непроменљиви у Јави?

Како Јава користи концепт стринг литерала. Претпоставимо да постоји 5 референтних варијабли, а све се односе на један објекат 'Сацхин'. Ако једна референтна променљива промени вредност објекта, на њу ће утицати све референтне варијабле. Зато су Стринг објекти непроменљиви у Јави.

Следе неке карактеристике Стринга које чине Стринг објекте непроменљивим.

1. ЦлассЛоадер:

ЦлассЛоадер у Јави користи Стринг објекат као аргумент. Узмите у обзир, ако је Стринг објекат променљив, вредност може бити промењена и класа која би требало да буде учитана може бити другачија.

Да би се избегла оваква погрешна интерпретација, Стринг је непроменљив.

2. Безбедан нити:

Пошто је Стринг објекат непроменљив, не морамо да водимо рачуна о синхронизацији која је потребна док делимо објекат у више нити.

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

Као што смо видели у учитавању класе, непроменљиви Стринг објекти избегавају даље грешке учитавањем исправне класе. Ово доводи до тога да се апликативни програм учини сигурнијим. Размотрите пример банкарског софтвера. Корисничко име и лозинку не може да промени ниједан уљез јер су Стринг објекти непроменљиви. Ово може учинити апликацијски програм сигурнијим.

4. Хеап Спаце:

Непроменљивост Стринга помаже да се минимизира употреба у меморији гомиле. Када покушамо да прогласимо нови стринг објекат, ЈВМ проверава да ли вредност већ постоји у скупу стрингова или не. Ако постоји, иста вредност се додељује новом објекту. Ова функција омогућава Јави да ефикасно користи простор гомиле.

потхинени рам

Зашто је Стринг класа Финал у Јави?

Разлог због којег је класа Стринг коначна је зато што нико не може надјачати методе Стринг класе. Тако да може да пружи исте карактеристике новим Стринг објектима као и старим.