logo

Променљиви и непроменљиви у Јави

Јава је објектно оријентисани програмски језик. Пошто је реч о објектно оријентисаном програмском језику, све методе и механизам се врте око објеката. Један концепт заснован на објектима је променљив и непроменљив у Јави . Објекти у Јави су или променљиви или непроменљиви; зависи од тога како се објекат може поновити.

У овом одељку ћемо разговарати о променљивим и непроменљивим објектима у Јави. Даље, видећемо разлику између њих.

Шта су променљиви објекти

Променљиви објекти су објекти чија се вредност може променити након иницијализације. Можемо променити вредности објекта, као што су поље и стања, након што је објекат креиран. На пример, јава.утил.Дате , СтрингБуилдер , СтрингБуффер , итд.

Када извршимо промену у постојећим променљивим објектима, нови објекат неће бити креиран; уместо тога, промениће вредност постојећег објекта. Класе ових објеката обезбеђују методе за уношење промена у њему.

Геттери и Сеттери (методе гет() и сет()) су доступни у променљивим објектима. Променљиви објекат може, али и не мора бити безбедан нити.

објективна јава

Шта су непроменљиви објекти

Непроменљиви објекти су објекти чија вредност се не може променити након иницијализације. Не можемо ништа променити када се објекат креира. На пример, примитивни објекти као што је инт , дугачак , пловак , дупло , све старе класе, Класа омотача , Стринг цласс , итд.

Укратко, непроменљив значи непромењен или непроменљив. Једном када су непроменљиви објекти креирани, његове вредности и стање објекта се не могу мењати.

Доступни су само Геттери (метод гет()), а не Сеттери (метод сет()) за непроменљиве објекте.

Хајде да видимо како да креирамо класе за променљиве и непроменљиве објекте.

Како направити променљиву класу

Следеће две ствари су неопходне за креирање променљиве класе:

  • Методе за измену вредности поља
  • Геттери и Сеттери објеката

Размотрите следећи пример променљиве класе:

рандом но генератор у Јави
 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()); } } 

Излаз:

 JavaTpoint Java Training 

Из горњег примера мењамо вредност имена помоћу методе сетНаме.

Како направити непроменљиву класу

Следеће ствари су неопходне за креирање непроменљиве класе:

  • Завршна класа, која се проглашава као коначна тако да се не може продужити.
  • Сва поља треба да буду приватна тако да је директан приступ пољима блокиран.
  • Нема сетера
  • Сва променљива поља треба да буду коначна тако да се не могу понављати када се једном иницијализирају.

Размотрите следећи пример:

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

Излаз:

 Core Java Training 

Дакле, расправљали смо о променљивим и непроменљивим објектима и класама. Хајде да разговарамо о разликама између њих:

Разлика између променљивих и непроменљивих објеката

Следе неке кључне разлике између променљивих и непроменљивих објеката у Јава :

палиндромски број
  • Променљиви објекти се могу променити у било коју вредност или стање без додавања новог објекта. Док се непроменљиви објекти не могу променити у своју вредност или стање након што су креирани. У случају непроменљивих објеката, кад год променимо стање објекта, креираће се нови објекат.
  • Променљиви објекти обезбеђују метод за промену садржаја објекта. Компаративно, непроменљиви објекти не пружају никакав метод за промену вредности.
  • Променљиви објекти подржавају и сетере и геттере. Компаративно, непроменљиви објекти подржавају само сетере, не и гетере.
  • Променљиви објекти могу или не морају бити безбедни за нити, али непроменљиви објекти су подразумевано безбедни за нити.
  • Примери променљивих класа су СтрингБуффер, Јава.утил.Дате, СтрингБуилдер, итд. Док су непроменљиви објекти застареле класе, класе омотача, Стринг класа итд.

Размотрите доњу табелу:

Мутабле Непроменљиво
Можемо променити вредност променљивих објеката након иницијализације. Једном када се покрене непроменљиви објекат; Не можемо променити њене вредности.
Држава се може променити. Држава се не може променити.
У променљивим објектима не формирају се нови објекти. У непроменљивим објектима, нови објекат се формира када се вредност објекта промени.
Пружа методе за промену објекта. Не пружа никакав метод за промену вредности објекта.
Подржава методе гет() и сет() за рад са објектом. Подржава само гет() метод за прослеђивање вредности објекта.
Променљиве класе могу или не морају бити безбедне за нити. Непроменљиве класе су безбедне за нити.
Основе за креирање променљиве класе су методе за модификацију поља, геттера и сеттера. Основе за креирање непроменљиве класе су финална класа, приватна поља, коначни променљиви објекти.

Зашто су стрингови у Јави непроменљиви

Стринг у Јави је веома посебна класа, јер се користи скоро у сваком Јава програму. Због тога је непроменљиво да побољша перформансе и безбедност. Хајде да то детаљно разумемо:

У Јави, стрингови користе концепт литерала. Претпоставимо да имамо објекат који има много референтних променљивих. У таквом сценарију, ако променимо вредност референтне променљиве, то ће утицати на цео објекат и све његове вредности.

цсс бацкгроунд

Поред горе наведених разлога, следећи разлози су такође одговорни да стринг постане непроменљив:

Непроменљиви објекти су веома једноставни; нема потребе за синхронизацијом и инхерентно су безбедни за нити. Али, непроменљиви објекти су добри градивни блокови за друге објекте, тако да морамо да им пружимо посебну пажњу.

Већина програмера чини стринг коначним објектом тако да се касније не може мењати.

Закључак

Разговарали смо о променљивим и непроменљивим објектима у Јави, сада имамо јасно разумевање и променљивих и непроменљивих објеката и класа. Даље, видели смо како да креирамо променљиву и непроменљиву класу.

Примећено је да непроменљиви објекти могу бити промењени у своју вредност и стање када се једном покрену и могу, али не морају бити безбедни за нити. Упоредно, непроменљиви објекти се не могу променити у њихово стање и вредност и подразумевано безбедно за нити.