다음 코드에 대한 명확한 설명 :
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);
null 참조 NullPointerException
를 호출하려고하기 때문에 분명히 이것은 던질 것 append
입니다.
StringBuilder sample = new StringBuilder();
StringBuilder referToSample = sample;
referToSample = null;
sample.append("A");
System.out.println(sample);
그래서 여기에 내 질문 NullPointerException
이 있습니다. 처음 두 예제에서보고 이해하는 것은 두 개체가 동일한 개체를 참조하는 경우 값을 변경하면 두 개체가 모두를 가리키고 있기 때문에 다른 개체에도 반영되기 때문에 마지막 코드 샘플이 던지지 않는 이유는 무엇입니까? 동일한 메모리 참조. 그렇다면 그 규칙이 여기에 적용되지 않는 이유는 무엇입니까? null
referToSample에 할당 하면 샘플도 null이어야하고 NullPointerException을 throw해야하지만 throw하지 않는 이유는 무엇입니까?
sample
여전히sample
입니다. 당신은 단지 변경했습니다referToSample
.