logo

Foranderlig og uforanderlig i Java

Java er et objektorienteret programmeringssprog. Da det er et objektorienteret programmeringssprog, drejer det sig alle metoder og mekanismer om objekterne. Et objektbaseret koncept er foranderligt og uforanderlig i Java . Objekter i Java er enten foranderlige eller uforanderlige; det afhænger af, hvordan objektet kan itereres.

I dette afsnit vil vi diskutere mutable og uforanderlige objekter i Java. Yderligere vil vi se forskellen mellem dem.

Hvad er foranderlige objekter

De foranderlige objekter er objekter, hvis værdi kan ændres efter initialisering. Vi kan ændre objektets værdier, såsom felt og tilstande, efter at objektet er oprettet. For eksempel, java.util.Dato , StringBuilder , StringBuffer , etc.

Når vi lavede en ændring i eksisterende foranderlige objekter, vil der ikke blive oprettet noget nyt objekt; i stedet vil det ændre værdien af ​​det eksisterende objekt. Disse objekters klasser giver metoder til at foretage ændringer i det.

Getters og Setters (get() og set() metoderne) er tilgængelige i mutable objekter. Det Mutable-objekt er muligvis ikke trådsikkert.

gør et shell-script eksekverbart

Hvad er uforanderlige objekter

De uforanderlige objekter er objekter, hvis værdi ikke kan ændres efter initialisering. Vi kan ikke ændre noget, når først objektet er oprettet. For eksempel, primitive objekter såsom int, lang , flyde , dobbelt , alle ældre klasser, Indpakningsklasse , Strenge klasse , etc.

I en nøddeskal betyder uforanderlig uændret eller uforanderlig. Når først de uforanderlige objekter er oprettet, kan dets objektværdier og tilstand ikke ændres.

Kun Getters (get()-metoden) er tilgængelige, ikke Setters (set()-metoden) for uforanderlige objekter.

Lad os se, hvordan man opretter klasser for foranderlige og uforanderlige objekter.

Sådan opretter du en foranderlig klasse

Følgende to ting er afgørende for at skabe en foranderlig klasse:

  • Metoder til ændring af feltværdierne
  • Getters og Settere af objekterne

Overvej nedenstående eksempel på den foranderlige klasse:

delvis afledt latex
 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 

Fra ovenstående eksempel ændrer vi navneværdien ved hjælp af setName-metoden.

Sådan opretter du en uforanderlig klasse

Følgende ting er afgørende for at skabe en uforanderlig klasse:

  • Afsluttende klasse, som erklæres som endelig, så den ikke kan forlænges.
  • Alle felter skal være private, så direkte adgang til felterne er spærret.
  • Ingen settere
  • Alle foranderlige felter skal være så endelige, så de ikke kan gentages, når de først er initialiseret.

Overvej nedenstående eksempel:

 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 

Derfor har vi diskuteret de foranderlige og uforanderlige objekter og klasser. Lad os diskutere forskellene mellem dem:

Forskellen mellem foranderlige og uforanderlige objekter

Følgende er nogle vigtige forskelle mellem foranderlige og uforanderlige objekter i Java :

java print
  • De foranderlige objekter kan ændres til enhver værdi eller tilstand uden at tilføje et nyt objekt. Hvorimod de uforanderlige objekter ikke kan ændres til deres værdi eller tilstand, når de først er oprettet. I tilfælde af uforanderlige objekter, når vi ændrer objektets tilstand, vil der blive oprettet et nyt objekt.
  • Foranderlige objekter giver en metode til at ændre objektets indhold. Til sammenligning giver de uforanderlige objekter ingen metode til at ændre værdierne.
  • De foranderlige objekter understøtter både sættere og gettere. Til sammenligning understøtter de uforanderlige objekter kun settere, ikke gettere.
  • De mutable objekter er muligvis trådsikre, men de uforanderlige objekter er trådsikre som standard.
  • De foranderlige klasseeksempler er StringBuffer, Java.util.Date, StringBuilder osv. Hvorimod de uforanderlige objekter er legacy-klasser, wrapper-klasser, String-klasse osv.

Overvej nedenstående tabel:

Foranderlig Uforanderlig
Vi kan ændre værdien af ​​foranderlige objekter efter initialisering. Når et uforanderligt objekt er initieret; Vi kan ikke ændre dens værdier.
Tilstanden kan ændres. Staten kan ikke ændres.
I foranderlige objekter dannes der ingen nye objekter. I uforanderlige objekter dannes et nyt objekt, når værdien af ​​objektet ændres.
Det giver metoder til at ændre objektet. Det giver ikke nogen metode til at ændre objektværdien.
Det understøtter get() og set() metoder til at dela med objektet. Det understøtter kun get()-metoden til at videregive værdien af ​​objektet.
Foranderlige klasser er muligvis eller måske ikke trådsikre. Uforanderlige klasser er trådsikre.
Det væsentlige for at skabe en foranderlig klasse er metoder til at ændre felter, gettere og sættere. Det væsentlige for at skabe en uforanderlig klasse er slutklasse, private felter, endelige foranderlige objekter.

Hvorfor er strenge i Java uforanderlige

String i Java er en meget speciel klasse, da den bruges næsten i alle Java-programmer. Det er derfor, det er uforanderligt for at forbedre ydeevne og sikkerhed. Lad os forstå det i detaljer:

I Java bruger strenge begrebet bogstaver. Antag, at vi har et objekt med mange referencevariable. I et sådant scenario, hvis vi ændrer værdien af ​​en referencevariabel, vil det påvirke hele objektet og alle dets værdier.

java-streng af array

Bortset fra ovenstående årsager er følgende årsager også ansvarlige for at gøre strengen uforanderlig:

Uforanderlige objekter er meget enkle; der er ikke behov for synkronisering og er i sagens natur trådsikre. Men uforanderlige genstande er gode byggeklodser til andre genstande, så vi er nødt til at give dem særlig pleje.

De fleste udviklere gør strengen til det endelige objekt, så den ikke kan ændres senere.

Konklusion

Vi har diskuteret foranderlige og uforanderlige objekter i Java, nu har vi en klar forståelse af både foranderlige og uforanderlige objekter og klasser. Yderligere har vi set, hvordan man skaber en foranderlig og uforanderlig klasse.

Det bemærkes, at uforanderlige objekter kan ændres til deres værdi og tilstand, når de først er initieret og kan være trådsikre. Til sammenligning kan de uforanderlige objekter ikke ændres til deres tilstand og værdi og standard trådsikre.