次のコードの説明:
StringBuilder sample = new StringBuilder();
StringBuilder referToSample = sample;
referToSample.append("B");
System.out.println(sample);
これはB、証明sampleとreferToSampleオブジェクトが同じメモリ参照を参照するように印刷されます。
StringBuilder sample = new StringBuilder();
StringBuilder referToSample = sample;
sample.append("A");
referToSample.append("B");
System.out.println(referToSample);
これはAB同じことを証明するものを印刷します。
StringBuilder sample = new StringBuilder();
StringBuilder referToSample = sample;
referToSample = null;
referToSample.append("A");
System.out.println(sample);
NullPointerException私がappendnull参照を呼び出そうとしているので、これは明らかにスローされます。
StringBuilder sample = new StringBuilder();
StringBuilder referToSample = sample;
referToSample = null;
sample.append("A");
System.out.println(sample);
だからここに私の質問です、NullPointerException最初の2つの例から見て理解できるのは、2つのオブジェクトが同じオブジェクトを参照していて、値を変更すると、両方が指しているため、他にも反映されるため、最後のコードサンプルがスローされないのはなぜですか?同じメモリ参照。では、なぜそのルールがここに適用されないのですか?nullreferToSample に割り当てると、サンプルもnullになり、NullPointerExceptionがスローされますが、スローされないのはなぜですか?




sampleまだsampleです。あなただけが変わったreferToSample。