? Utvecklarna av Java utformade för " String " klass som en oföränderlig objekt . " Immutable " betyder att värdet av klassen inte kan ändras när programmeraren instansieras objektet. Även om det verkar fördelaktigt att alltid använda ett String-objekt som har ett föränderligt värde , några skäl förklara varför detta är inte fallet . Oföränderliga strängar lämpar sig att använda i flertrådade program , öka programmets säkerhet , minimera minnesanvändning , och fungerar bättre som värden i datastrukturer som HashTables . Strängar i flertrådade program
program kallas multi - trådad när de leker så kallade "trådar" som kör koden samtidigt . När ett program spawns flera trådar , dessa trådar arbetar ofta på samma variabler vid olika tidpunkter . Faran är när två trådar delar en variabel , och en förändring tråd sitt värde medan den andra fortfarande använder det . En " låsning " mekanism vaktar vanligen variabler i gängning situationer . Med en oföränderlig sträng , dock , är en tråd inte om värdet på variabeln . Addera Säkerhet
oföränderlighet strängar också hjälper till med vissa säkerhetsproblem . När en användare anger inloggningsuppgifter på en webbplats , är det teoretiskt möjligt för honom att ändra värdet på användarnamn eller lösenord sträng innan den passerar till systemet . Om detta händer , så att användaren kan injicera skadlig kod till det system han eller hon loggar in . Eftersom strängarna är oföränderliga , dock är detta inte möjligt .
Minimera minnesanvändning
När en programmerare skapar ett String-objekt , ligger det objektet i en fast punkt i minnet , och den variabla namn fungerar som dess " referens. " Eftersom hänvisningen till minnet och vad minnet innehåller två separata saker , innebär detta att andra variabelnamn också kan referera till samma minnesplats . Så när kopior av en sträng krävs , kan olika variabler referera till samma oföränderliga strängen , och eftersom det inte kommer att förändras , har inget behov av att skapa kopior av samma sträng .
Användning i Hashtable Datastrukturer
HashTables kallas " ordböcker " eftersom de använder nyckelordsvärdepar att söka på datastruktur lättare . Referensteckensträngarna vanligtvis ett värde ( t.ex. " namn " = > " Robert " eller " okänd " = > 25 ) . Eftersom strängarna är oföränderliga , har en programmerare inte oroa nyckelordet för ett värde förändras , och förlorar tillgång till det värdet . Addera