logo

Föränderlig och oföränderlig i Java

Java är ett objektorienterat programmeringsspråk. Eftersom det är ett objektorienterat programmeringsspråk, kretsar alla metoder och mekanismer kring objekten. Ett objektbaserat koncept är föränderligt och oföränderlig i Java . Objekt i Java är antingen föränderliga eller oföränderliga; det beror på hur objektet kan itereras.

I det här avsnittet kommer vi att diskutera föränderliga och oföränderliga objekt i Java. Vidare kommer vi att se skillnaden mellan dem.

Vad är föränderliga objekt

De föränderliga objekten är objekt vars värde kan ändras efter initialisering. Vi kan ändra objektets värden, såsom fält och tillstånd, efter att objektet har skapats. Till exempel, java.util.Datum , StringBuilder , StringBuffer , etc.

När vi gjorde en förändring i befintliga föränderliga objekt kommer inget nytt objekt att skapas; istället kommer det att ändra värdet på det befintliga objektet. Dessa objekts klasser tillhandahåller metoder för att göra ändringar i det.

Getters och Setters ( get() och set() metoderna är tillgängliga i föränderliga objekt. Det föränderliga objektet kan vara trådsäkert eller inte.

in.next java

Vad är oföränderliga objekt

De oföränderliga objekten är objekt vars värde inte kan ändras efter initialisering. Vi kan inte ändra någonting när objektet väl är skapat. Till exempel, primitiva föremål som int , lång , flyta , dubbel , alla äldre klasser, Omslagsklass , Strängklass , etc.

I ett nötskal betyder oföränderlig oförändrad eller oföränderlig. När de oföränderliga objekten väl har skapats kan dess objektvärden och tillstånd inte ändras.

Endast Getters (get()-metoden) är tillgängliga, inte Setters (set()-metoden) för oföränderliga objekt.

Låt oss se hur man skapar klasser för föränderliga och oföränderliga objekt.

Hur man skapar en föränderlig klass

Följande två saker är viktiga för att skapa en föränderlig klass:

  • Metoder för att modifiera fältvärdena
  • Getters och Setters av objekten

Betrakta exemplet nedan på den föränderliga klassen:

java konvertera int till sträng
 public class JtpExample { private String s; JtpExample(String s) { this.s = s; } public String getName() { return s; } public void setName(String coursename) { this.s = coursename; } public static void main(String[] args) { JtpExample obj = new JtpExample('JavaTpoint'); System.out.println(obj.getName()); // Here, we can update the name using the setName method. obj.setName('Java Training'); System.out.println(obj.getName()); } } 

Produktion:

 JavaTpoint Java Training 

Från exemplet ovan ändrar vi namnvärdet med metoden setName.

Hur man skapar en oföränderlig klass

Följande saker är viktiga för att skapa en oföränderlig klass:

  • Finalklass, som förklaras som final så att den inte kan förlängas.
  • Alla fält ska vara privata så att direktåtkomst till fälten blockeras.
  • Inga Setters
  • Alla föränderliga fält bör vara lika slutgiltiga så att de inte kan itereras när de har initierats.

Tänk på exemplet nedan:

 public class JtpExample1 { private final String s; JtpExample1(final String s) { this.s = s; } public final String getName() { return s; } public static void main(String[] args) { JtpExample obj = new JtpExample('Core Java Training'); System.out.println(obj.getName()); } } 

Produktion:

 Core Java Training 

Därför har vi diskuterat de föränderliga och oföränderliga objekten och klasserna. Låt oss diskutera skillnaderna mellan dem:

Skillnaden mellan föränderliga och oföränderliga objekt

Följande är några viktiga skillnader mellan föränderliga och oföränderliga objekt i Java :

hur man skapar en array i java
  • De föränderliga objekten kan ändras till valfritt värde eller tillstånd utan att lägga till ett nytt objekt. Medan de oföränderliga objekten inte kan ändras till dess värde eller tillstånd när de väl har skapats. När det gäller oföränderliga objekt kommer ett nytt objekt att skapas när vi ändrar objektets tillstånd.
  • Föränderliga objekt ger en metod för att ändra innehållet i objektet. Jämförelsevis ger de oföränderliga objekten ingen metod för att ändra värdena.
  • De föränderliga objekten stöder både sättare och getters. Jämförelsevis stöder de oföränderliga objekten endast setters, inte getters.
  • De föränderliga objekten är kanske eller kanske inte trådsäkra, men de oföränderliga objekten är trådsäkra som standard.
  • De föränderliga klassexemplen är StringBuffer, Java.util.Date, StringBuilder, etc. Medan de oföränderliga objekten är äldre klasser, wrapper-klasser, String-klass, etc.

Tänk på tabellen nedan:

Föränderlig Oföränderlig
Vi kan ändra värdet på föränderliga objekt efter initialisering. När ett oföränderligt objekt har initierats; Vi kan inte ändra dess värderingar.
Tillståndet kan ändras. Staten kan inte ändras.
I föränderliga objekt bildas inga nya objekt. I oföränderliga objekt bildas ett nytt objekt när värdet på objektet ändras.
Den tillhandahåller metoder för att ändra objektet. Den tillhandahåller ingen metod för att ändra objektvärdet.
Den stöder metoderna get() och set() för att dela med objektet. Den stöder bara metoden get() för att skicka objektets värde.
Föränderliga klasser kan vara trådsäkra eller inte. Oföränderliga klasser är trådsäkra.
Det väsentliga för att skapa en föränderlig klass är metoder för att modifiera fält, getters och sättare. Det väsentliga för att skapa en oföränderlig klass är slutklass, privata fält, slutliga föränderliga objekt.

Varför är strängar i Java oföränderliga

String i Java är en mycket speciell klass, eftersom den används nästan i alla Java-program. Det är därför det är oföränderligt för att förbättra prestanda och säkerhet. Låt oss förstå det i detalj:

I Java använder strängar begreppet bokstaver. Anta att vi har ett objekt som har många referensvariabler. I ett sådant scenario, om vi ändrar värdet på en referensvariabel, kommer det att påverka hela objektet och alla dess värden.

hög sort

Bortsett från ovanstående skäl är följande skäl också ansvariga för att göra strängen oföränderlig:

Oföränderliga objekt är mycket enkla; det finns inget behov av synkronisering och är i sig trådsäkra. Men oföränderliga föremål är bra byggstenar för andra föremål, så vi måste ge dem särskild omsorg.

De flesta utvecklare gör strängen till det sista objektet så att det inte kan ändras senare.

Slutsats

Vi har diskuterat föränderliga och oföränderliga objekt i Java, nu har vi en klar förståelse för både föränderliga och oföränderliga objekt och klasser. Vidare har vi sett hur man skapar en föränderlig och oföränderlig klass.

Det bör noteras att oföränderliga objekt kan ändras till deras värde och tillstånd när de väl har initierats och kan eller kanske inte är trådsäkra. Jämförelsevis kan de oföränderliga objekten inte ändras till deras tillstånd och värde och standardtrådsäkra.