logo

Nekintama eilutė Java

Styga yra neišvengiamas kintamojo tipas rašant bet kurią taikomąją programą. Eilučių nuorodos naudojamos įvairiems atributams, pvz., vartotojo vardui, slaptažodžiui ir kt., saugoti. Java, Styginių objektai yra nekintantys . Nekintama tiesiog reiškia nekeičiamą arba nekeičiamą.

Sukūrus eilutės objektą, jo duomenų arba būsenos pakeisti negalima, tačiau sukuriamas naujas eilutės objektas.

Pabandykime suprasti nekintamumo sąvoką pagal toliau pateiktą pavyzdį:

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 } } 
Išbandykite dabar

Išvestis:

 Sachin 

Dabar tai galima suprasti pagal toliau pateiktą diagramą. Čia Sachin nekeičiamas, o sukuriamas naujas objektas su Sachin Tendulkar. Štai kodėl styga yra žinoma kaip nekintanti.

Nekintama eilutė Java

Kaip matote aukščiau esančiame paveikslėlyje, yra sukurti du objektai, bet s referencinis kintamasis vis dar reiškia „Sachin“, o ne „Sachin Tendulkar“.

Bet jei mes jį aiškiai priskirsime nuorodos kintamajam, jis nurodys objektą „Sachin Tendulkar“.

Pavyzdžiui:

Testimmutablestring1.java

 class Testimmutablestring1{ public static void main(String args[]){ String s='Sachin'; s=s.concat(' Tendulkar'); System.out.println(s); } } 
Išbandykite dabar

Išvestis:

 Sachin Tendulkar 

Tokiu atveju s nurodo „Sachin Tendulkar“. Atkreipkite dėmesį, kad Sachin objektas vis dar nėra modifikuotas.

Kodėl styginių objektai yra nekintami Java?

Kaip Java naudoja sąvoką String literal. Tarkime, kad yra 5 atskaitos kintamieji, visi nurodo vieną objektą „Sachin“. Jei vienas atskaitos kintamasis pakeičia objekto reikšmę, jį paveiks visi atskaitos kintamieji. Štai kodėl styginių objektai yra nekintami Java.

Toliau pateikiamos kai kurios String ypatybės, dėl kurių stygos objektai yra nekintami.

1. Classloader:

„Java“ „ClassLoader“ naudoja String objektą kaip argumentą. Apsvarstykite, jei eilutės objektas yra modifikuojamas, vertė gali būti pakeista, o klasė, kuri turėtų būti įkelta, gali skirtis.

Kad būtų išvengta tokio klaidingo aiškinimo, eilutė yra nekintanti.

2. Saugus siūlams:

Kadangi eilutės objektas yra nekintamas, mes neturime rūpintis sinchronizavimu, kurio reikia dalijantis objektu keliose gijose.

3. Saugumas:

Kaip matėme įkeliant klasę, nekintantys String objektai išvengia tolesnių klaidų įkeldami teisingą klasę. Tai leidžia padaryti taikomąją programą saugesnę. Apsvarstykite banko programinės įrangos pavyzdį. Vartotojo vardo ir slaptažodžio negali keisti joks įsibrovėlis, nes String objektai yra nekeičiami. Tai gali padaryti taikomąją programą saugesnę.

4. Krūvos erdvė:

Stygos nekintamumas padeda sumažinti krūvos atminties naudojimą. Kai bandome deklaruoti naują eilutės objektą, JVM patikrina, ar reikšmė jau yra eilutės telkinyje, ar ne. Jei ji yra, tokia pati reikšmė priskiriama naujam objektui. Ši funkcija leidžia „Java“ efektyviai išnaudoti krūvą.

vlc atsisiųsti vaizdo įrašus iš youtube

Kodėl „Java“ stygų klasė yra galutinė?

Priežastis, kodėl stygų klasė yra galutinė, yra ta, kad niekas negali nepaisyti stygų klasės metodų. Kad jis galėtų suteikti tas pačias funkcijas naujiems String objektams ir seniesiems.