Aşağıdaki kod için nead açıklama:
StringBuilder sample = new StringBuilder();
StringBuilder referToSample = sample;
referToSample.append("B");
System.out.println(sample);
Bu, Bkanıtların sampleve referToSamplenesnelerin 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 ABda 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ü appendboş 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 nullreferToSample sonra numune de null olmalıdır ve bir NullPointerException atarsam ama bir tane atma değil, neden?




samplehalasample. Sadece değiştinreferToSample.