Apa obyek sing bisa diowahi / ora bisa diganti, lan kanggo apa?  - 1

"Hai, Amigo!"

"Hai, Bilaabo!"

"Dina iki Bilaabo bakal ngandhani babagan obyek sing bisa diganti lan ora bisa diganti .

"Obyek sing bisa diganti sawise digawe diarani mutable ."

"Obyek sing ora bisa diganti sawise digawe diarani immutable ."

"Apa sing nemtokake manawa aku bisa ngganti obyek?"

"Panulis kelas anyar bisa nggawe obyek saka kelas kasebut ora bisa diganti. Contone, yen sampeyan nggawe kabeh setter pribadi, obyek mung bakal duwe konstruktor lan getter; tegese ora bisa diganti sawise digawe. ."

"Lan apa gunane?"

"Obyek sing ora bisa diganti duwe akeh sifat sing migunani, nanging aku bakal nyorot loro sing umum kanggo meh kabeh obyek sing ora bisa diganti:"

1) Obyek sing ora bisa diganti luwih gampang ditindakake tinimbang obyek sing bisa diganti.

2) Obyek sing ora bisa diganti bisa digunakake kanthi bebas ing pirang-pirang benang bebarengan.

"Nalika pangembang mutusake nulis kelas sing ora bisa diganti, dheweke biasane nggawe versi kelas sing bisa diganti lan ora bisa diganti."

"Nanging apa gunane nulis rong kelas tinimbang siji?"

"Kadhangkala iku worth iku nalika versi immutable saka obyek bakal adoh prasaja / luwih cepet saka siji mutable. Dadi, padha nggawe rong versi. Iku jenis kaya ArrayList lan LinkedList: loro-lorone dhaftar, nanging siji wis optimized kanggo tujuan tartamtu, lan sing nomer loro kanggo wong liya."

"Sing nggawe luwih raos wis."

"Ana uga kelas sing ora bisa diganti, sing ora duwe versi sing bisa diganti."

"Nanging yen aku kudu ngganti soko ing salah siji obyek? Apa sampeyan bisa nindakake karo obyek immutable?"

"Biasane, kelas immutable ngemot macem-macem cara sing tumindak kaya ngganti obyek, nanging cara iki mung nggawe obyek anyar lan bali, tinimbang ngganti obyek dhewe."

"Iki sawetara conto:"

kode Jawa Katrangan
String s = "london";
String s2 = s.toUpperCase();
Akibaté, s ngemot string «london» lan s2 ngandhut «LONDON»
Integer i = 1;
Integer j = i;
j++;
Mangkene apa sing kedadeyan:
Integer i = Integer anyar (1);
Integer j = i;
j = Integer anyar(i.getInt()+1);

"Kelas String minangka kelas sing ora bisa diganti. Kabeh obyek String ora bisa diganti, nanging ora nyegah kita bisa nggarap. Contone, metode toUpperCase () saka kelas String ngowahi String dadi huruf gedhe (yaiku ngganti kabeh huruf cilik). nganggo huruf kapital). Nanging, cara iki ora ngganti String dhewe, nanging ngasilake String anyar. String anyar iki identik karo sing pisanan kajaba kabeh karakter huruf gedhe (huruf kapital).

"Kelas Integer uga minangka kelas sing ora bisa diganti. Kabeh obyek Integer ora bisa diganti. Saben-saben kita ngganti obyek Integer, kita bener-bener nggawe obyek anyar."

"Apik tenan! Hore, Bilaabo."

"Hore kanggo kula! Hooray kanggo Bilaabo!"