Baca klarifikasi untuk kode berikut:
StringBuilder sample = new StringBuilder();
StringBuilder referToSample = sample;
referToSample.append("B");
System.out.println(sample);
Ini akan mencetak Bsehingga bukti sampledan referToSampleobjek mengacu pada referensi memori yang sama.
StringBuilder sample = new StringBuilder();
StringBuilder referToSample = sample;
sample.append("A");
referToSample.append("B");
System.out.println(referToSample);
Ini akan mencetak AByang juga membuktikan hal yang sama.
StringBuilder sample = new StringBuilder();
StringBuilder referToSample = sample;
referToSample = null;
referToSample.append("A");
System.out.println(sample);
Jelas ini akan melempar NullPointerExceptionkarena saya mencoba memanggil appendreferensi nol.
StringBuilder sample = new StringBuilder();
StringBuilder referToSample = sample;
referToSample = null;
sample.append("A");
System.out.println(sample);
Jadi inilah pertanyaan saya, mengapa sampel kode terakhir tidak dibuang NullPointerExceptionkarena yang saya lihat dan pahami dari dua contoh pertama adalah jika dua objek merujuk ke objek yang sama maka jika kita mengubah nilai apa pun maka itu juga akan mencerminkan yang lain karena keduanya menunjuk ke referensi memori yang sama. Jadi mengapa aturan itu tidak berlaku di sini? Jika saya menetapkan nullke referToSample maka sampel juga harus nol dan harus membuang NullPointerException tetapi tidak membuangnya, mengapa?




samplemasihsample. Anda hanya berubahreferToSample.