Java sendiri adalah panggilan penerusan nilai, dan nilai alamat diteruskan ke objek. Menugaskan ulang nilai alamat sama dengan menunjuk ulang dan tidak akan mempengaruhi lapisan luar.
Dan objek Integer disini juga mempunyai ciri-ciri khusus. Faktanya, ini mungkin mirip dengan
Copy kode kodenya sebagai berikut:
kelas Integer{
nilai int akhir; //Setelah ditetapkan, nilai tersebut tidak dapat diubah.
}
Ini muncul: nilai alamat yang diteruskan saat pemanggilan tidak dapat mengubah lapisan luar + objek itu sendiri tidak dapat diubah. Oleh karena itu, nilai ini tidak dapat diubah
Ada banyak solusi
1. Gaya Java adalah menggunakan nilai kembalian untuk satu nilai. return i; tetapkan i=foo(); gunakan array atau objek untuk beberapa nilai.
2. Lulus kelas enkapsulasi Anda sendiri. kelas MutableInteger{ nilai int;}
3. Lewati objek bilangan bulat atom AtomicInteger khusus
Copy kode kodenya sebagai berikut:
public static void main(String[] parameter) {
AtomicInteger i=baru AtomicInteger(40);
i.intValue();
Sistem.keluar.println(i);
}
perubahan kekosongan statis publik (AtomicInteger i) {
i.set(55);
}
Anda juga dapat mengubah nilainya setelah meneruskannya,
Opsi yang disarankan 1, coba hindari