logo

Mulig og uforanderlig i Java

Java er et objektorientert programmeringsspråk. Siden det er et objektorientert programmeringsspråk, dreier det seg om alle metoder og mekanismer rundt objektene. Ett objektbasert konsept er foranderlig og uforanderlig i Java . Objekter i Java er enten mutable eller uforanderlige; det avhenger av hvordan objektet kan itereres.

I denne delen vil vi diskutere mutable og uforanderlige objekter i Java. Videre vil vi se forskjellen mellom dem.

Hva er foranderlige objekter

De mutbare objektene er objekter hvis verdi kan endres etter initialisering. Vi kan endre objektets verdier, som felt og tilstander, etter at objektet er opprettet. For eksempel, java.util.Dato , StringBuilder , StringBuffer , etc.

Når vi gjorde en endring i eksisterende mutable objekter, vil ingen nye objekter bli opprettet; i stedet vil det endre verdien til det eksisterende objektet. Klassene til disse objektene gir metoder for å gjøre endringer i det.

Getters og Setters ( get() og set() metodene) er tilgjengelige i mutable objekter. Det Mutable-objektet kan være trådsikkert eller ikke.

lage et skallskript kjørbart

Hva er uforanderlige objekter

De uforanderlige objektene er objekter hvis verdi ikke kan endres etter initialisering. Vi kan ikke endre noe når objektet er opprettet. For eksempel, primitive objekter slik som int , lang , flyte , dobbelt , alle eldre klasser, Innpakningsklasse , Strengeklasse , etc.

I et nøtteskall betyr uforanderlig umodifisert eller uforanderlig. Når de uforanderlige objektene er opprettet, kan ikke objektverdiene og tilstanden endres.

Bare Getters (get()-metoden) er tilgjengelig, ikke Setters (set()-metoden) for uforanderlige objekter.

La oss se hvordan du lager klasser for foranderlige og uforanderlige objekter.

Hvordan lage en foranderlig klasse

Følgende to ting er avgjørende for å lage en foranderlig klasse:

  • Metoder for å endre feltverdiene
  • Getters og Settere av objektene

Tenk på eksemplet nedenfor på den foranderlige klassen:

sorter en arraylist i java
 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()); } } 

Produksjon:

 JavaTpoint Java Training 

Fra eksemplet ovenfor endrer vi navneverdien ved å bruke setName-metoden.

Hvordan lage en uforanderlig klasse

Følgende ting er avgjørende for å lage en uforanderlig klasse:

  • Avsluttende klasse, som erklæres som endelig slik at den ikke kan forlenges.
  • Alle felt skal være private slik at direkte tilgang til feltene blokkeres.
  • Ingen settere
  • Alle mutbare felt skal være like endelige slik at de ikke kan itereres når de er initialisert.

Tenk på eksemplet nedenfor:

 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()); } } 

Produksjon:

 Core Java Training 

Derfor har vi diskutert de foranderlige og uforanderlige objektene og klassene. La oss diskutere forskjellene mellom dem:

Forskjellen mellom foranderlige og uforanderlige objekter

Følgende er noen viktige forskjeller mellom foranderlige og uforanderlige objekter i Java :

java print
  • De mutbare objektene kan endres til en hvilken som helst verdi eller tilstand uten å legge til et nytt objekt. Mens de uforanderlige objektene ikke kan endres til sin verdi eller tilstand når de først er opprettet. Når det gjelder uforanderlige objekter, når vi endrer tilstanden til objektet, vil et nytt objekt bli opprettet.
  • Foranderlige objekter gir en metode for å endre innholdet i objektet. Til sammenligning gir de uforanderlige objektene ingen metode for å endre verdiene.
  • De foranderlige objektene støtter både setterne og getterne. Til sammenligning støtter de uforanderlige objektene bare settere, ikke gettere.
  • De foranderlige objektene er kanskje eller ikke er trådsikre, men de uforanderlige objektene er trådsikre som standard.
  • Eksemplene på de foranderlige klassene er StringBuffer, Java.util.Date, StringBuilder, etc. Mens de uforanderlige objektene er eldre klasser, wrapper-klasser, String-klasse osv.

Tenk på tabellen nedenfor:

Mulig Uforanderlig
Vi kan endre verdien av mutbare objekter etter initialisering. Når et uforanderlig objekt er initiert; Vi kan ikke endre verdiene.
Staten kan endres. Staten kan ikke endres.
I foranderlige objekter dannes ingen nye objekter. I uforanderlige objekter dannes et nytt objekt når verdien til objektet endres.
Det gir metoder for å endre objektet. Det gir ingen metode for å endre objektverdien.
Den støtter get() og set() metoder for å dela med objektet. Den støtter bare get()-metoden for å sende verdien til objektet.
Mulige klasser kan være trådsikre eller ikke. Uforanderlige klasser er trådsikre.
Det essensielle for å lage en mutbar klasse er metoder for å modifisere felt, gettere og settere. Det vesentlige for å lage en uforanderlig klasse er sluttklasse, private felt, endelige foranderlige objekter.

Hvorfor er strenger i Java uforanderlige

String i Java er en veldig spesiell klasse, siden den brukes nesten i alle Java-programmer. Det er derfor den er uforanderlig for å forbedre ytelsen og sikkerheten. La oss forstå det i detalj:

I Java bruker strenger konseptet bokstaver. Anta at vi har et objekt som har mange referansevariabler. I et slikt scenario, hvis vi endrer verdien til en referansevariabel, vil det påvirke hele objektet og alle dets verdier.

java-streng av array

Bortsett fra de ovennevnte årsakene, er følgende årsaker også ansvarlige for å gjøre strengen uforanderlig:

Uforanderlige objekter er veldig enkle; det er ikke behov for synkronisering og er iboende trådsikre. Men uforanderlige objekter utgjør gode byggeklosser for andre objekter, så vi må gi dem spesiell omsorg.

De fleste utviklere gjør strengen til det endelige objektet slik at den ikke kan endres senere.

Konklusjon

Vi har diskutert foranderlige og uforanderlige objekter i Java, nå har vi en klar forståelse av både foranderlige og uforanderlige objekter og klasser. Videre har vi sett hvordan man lager en foranderlig og uforanderlig klasse.

Det bemerkes at uforanderlige objekter kan endres til deres verdi og tilstand når de er initiert og kan eller ikke kan være trådsikre. Til sammenligning kan de uforanderlige objektene ikke endres til deres tilstand og verdi og standard trådsikre.