Ano ang pagkakaiba sa pagitan ng Mutable at Immutable In Java?



Ang artikulong ito sa Mutable at Immutable sa Java ay isang komprehensibong gabay sa mga pagkakaiba sa pagitan nila at tinatalakay din kung bakit hindi nababago ang mga string ng java.

Ang Java ay isa sa pinakatanyag nagbibigay ng iba't ibang mga konsepto para sa paglikha ng mga application, at ang isang tulad ng konsepto ay Mutable And Immutable sa Java. Sa gayon, ang konsepto na ito ay umaasa sa paggawa ng mga pagbabago sa mga patlang pagkatapos ng paglikha ng bagay at sa gayon ay binabawasan ang programa para sa . Kaya, sa artikulong ito sa nabago at hindi nababago sa Java, tatalakayin ko ang mga sumusunod na paksa:

Ano ang bagay na Mutable?





Ang mga bagay na kung saan maaari mong baguhin ang mga patlang at isinasaad pagkatapos na malikha ang bagay ay kilala bilang mga nababagabag na bagay. Halimbawa : java.util.Date, StringBuilder, atbp.

Ano ang Immutable object?



Ang mga bagay kung saan hindi mo mababago ang anumang bagay sa sandaling nalikha ang bagay ay kilala bilang Immutable na mga bagay. Halimbawa : Ang mga naka-box na primitive na bagay tulad ng Integer, Long at iba pa.

Kaya, ngayong alam mo kung ano ang nababagabag at hindi nababago sa java, magpatulong tayo at tingnan ang mga pagkakaiba sa dalawa.

Pagkakaiba sa Pagitan ng Mutable at Immutable na mga bagay



Maaari kang mag-refer sa sumusunod na talahanayan para sa mga pagkakaiba sa pagitan ng nababago at hindi nababago na mga bagay sa Java.

Nababagabag Hindi nababago
Ang mga patlang ay maaaring mabago pagkatapos ng paglikha ng bagayHindi mababago ang mga patlang matapos ang paggawa ng object
Sa pangkalahatan ay nagbibigay ng isang paraan upang mabago ang halaga ng patlangWalang anumang paraan upang mabago ang halaga ng patlang
May mga pamamaraan ng Getter at SetterMayroon lamang paraan ng Getter
Halimbawa: StringBuilder, java.util.DateHalimbawa: String, Boxed primitive na mga bagay tulad ng Integer, Long at iba pa

Ngayong alam mo na ang mga pagkakaiba sa pagitan ng nababagabag at hindi nababago na mga bagay, tingnan natin kung paano lumikha ng mga ito mga klase.

Paano lumikha ng isang klase ng Mutable?

Upang lumikha ng isang nababagabag na klase sa Java kailangan mong tiyakin na ang mga sumusunod na kinakailangan ay nasiyahan:

  1. Magbigay ng paraan upang baguhin ang mga halagang patlang
  2. Paraan ng Getter at Setter

Isaalang-alang ang sumusunod na code:

halimbawang edureka pampublikong klase halimbawa {pribadong String coursename halimbawa (String coursename) {this.coursename = coursename} public String getName () {return coursename} public void setName (String coursename) {this.coursename = coursename} public static void main (String [] args) {halimbawa obj = bagong halimbawa ('Pag-aaral ng Makina') System.out.println (obj.getName ()) // i-update ang pangalan, ang bagay na ito ay nababago obj.setName ('Machine Learning Masters') System. out.println (obj.getName ())}}

Makikita mo ang sumusunod na output:

Mutable Output ng Bagay - nababago at hindi nababago sa Java- Edureka

Kaya't ngayon na alam mo kung paano lumikha ng isang nababagabagong klase, sa susunod sa artikulong ito, tingnan natin kung paano lumikha ng isang hindi nababago na klase.

Paano lumikha ng isang klase na Hindi mababago?

Upang lumikha ng isang hindi nababago na klase sa Java kailangan mong tiyakin na ang mga sumusunod na kinakailangan ay nasiyahan:

  1. Ang isang klase ay dapat ideklarang bilang panghuli upang hindi ito mapahaba.
  2. Ang lahat ng mga patlang ay dapat gawing pribado upang ang direktang pag-access ay hindi pinapayagan
  3. Walang mga pamamaraan ng setter
  4. Gawing pangwakas ang lahat ng nababagong mga patlang, nang sa gayon ay maitalaga lamang sila nang isang beses.
package edureka public class exampleimmutable {private final String coursename exampleimmutable (final String coursename) {this.coursename = coursename} public final String getName () {return coursename} public static void main (String [] args) {halimbawa obj = bagong halimbawa ( 'Machine Learning') System.out.println (obj.getName ())}}

Makikita mo ang output sa ibaba:

logistic regression sa halimbawa ng sawa

Sige, kaya't ngayon na alam mo ang tungkol sa nababagabag at hindi nababago na mga bagay, hayaan mong sabihin ko sa iyo na ang Strings ay hindi nababago sa Java. Ngayon, sigurado akong maaaring lumaki ito ng isang katanungan, kung bakit hindi nababago ang mga string sa Java. Kaya, susunod sa artikulong ito, tingnan natin ang pareho.

Bakit Hindi Mababago ang Mga String sa Java?

Gumagamit ang Java ng mga konsepto ng . Kaya, kung isasaalang-alang mo ang isang halimbawa kung saan mayroon kang maraming mga variable ng sanggunian na tumutukoy sa isang solong object, kung gayon kahit na binago ng isang variable na sanggunian ang halaga ng bagay , awtomatikong maaapektuhan ang lahat ng iba pang mga variable ng sanggunian. Gayundin, ayon sa Mabisang Java ,kabanata 4, pahina 73, ika-2 edisyon, ang mga sumusunod ay mga dahilan upang magamit ang mga klase na hindi mababago:

  • Ang mga bagay na hindi nababago ay simple
  • Ang mga bagay na ito ay hindi nangangailangan ng pagsabay at likas na ligtas sa thread
  • Ang mga bagay na hindi nababago ay gumagawa ng mahusay na mga bloke ng gusali para sa ibang mga bagay

Kung kailangan kong ipaliwanag sa iyo sa isang halimbawa, kung gayon,

Ipaalam sa amin na mayroon kang isang variable samplestring , na nag-iimbak ng string na ' Pag-aaral ng Makina '. Ngayon, kung pinagsama mo ang string na ito sa isa pang string ' Mga masters ', pagkatapos ang bagay na nilikha para sa “ Pag-aaral ng Makina ”Hindi magbabago. Sa halip, isang bagong bagay ang malilikha para sa “ Mga Master sa Pag-aaral ng Machine '. Sumangguni sa larawan sa ibaba:

Tulad ng nakikita mo sa larawan sa itaas, ang samplestring Ang variable ng sanggunian ay tumutukoy sa 'Pag-aaral ng Makina', ngunit hindi ang iba pang mga string, kahit na matapos ang paglikha ng dalawang mga bagay. Sa pamamagitan nito, natapos na kami sa artikulong ito sa Mutable at Immutable sa Java. Inaasahan kong malinaw ang tungkol sa bawat aspeto na tinalakay ko sa itaas.

Ngayon na naintindihan mo ang mga pangunahing kaalaman sa Java, tingnan ang ni Edureka, isang pinagkakatiwalaang kumpanya sa pag-aaral sa online na may isang network na higit sa 250,000 nasiyahan na mga nag-aaral na kumalat sa buong mundo. Ang kurso sa pagsasanay at sertipikasyon ng Java J2EE at SOA ng Edureka ay idinisenyo para sa mga mag-aaral at propesyonal na nais na maging isang Java Developer. Ang kurso ay dinisenyo upang bigyan ka ng isang panimula sa pag-program ng Java at sanayin ka para sa parehong core at advanced na mga konsepto ng Java kasama ang iba't ibang mga balangkas ng Java tulad ng Hibernate & Spring.

May tanong ba sa amin? Mangyaring banggitin ito sa seksyon ng mga komento ng blog na 'Nababago at Hindi mababago sa Java' na blog at babalikan ka namin sa lalong madaling panahon.