Aşağıdaki kod için nead açıklama:
StringBuilder sample = new StringBuilder();
StringBuilder referToSample = sample;
referToSample.append("B");
System.out.println(sample);
Bu, B
kanıtların sample
ve referToSample
nesnelerin aynı bellek referansına başvurması için yazdırılacaktır .
StringBuilder sample = new StringBuilder();
StringBuilder referToSample = sample;
sample.append("A");
referToSample.append("B");
System.out.println(referToSample);
Bu AB
da aynı şeyi kanıtlayan basılacaktır .
StringBuilder sample = new StringBuilder();
StringBuilder referToSample = sample;
referToSample = null;
referToSample.append("A");
System.out.println(sample);
Açıkçası bu atacak NullPointerException
çünkü append
boş bir referans çağırmaya çalışıyorum .
StringBuilder sample = new StringBuilder();
StringBuilder referToSample = sample;
referToSample = null;
sample.append("A");
System.out.println(sample);
İşte sorum şu, neden son kod örneği atılmıyor NullPointerException
çünkü ilk iki örnekte gördüğüm ve anladığım şey, aynı nesneye atıfta bulunan iki nesnenin herhangi bir değeri değiştirdiğimizde diğerine de yansıyacak çünkü her ikisi de aynı bellek referansı. Öyleyse bu kural neden burada uygulanmıyor? Ben atarsanız null
referToSample sonra numune de null olmalıdır ve bir NullPointerException atarsam ama bir tane atma değil, neden?
sample
halasample
. Sadece değiştinreferToSample
.