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