Nead chiarimento per il seguente codice:
StringBuilder sample = new StringBuilder();
StringBuilder referToSample = sample;
referToSample.append("B");
System.out.println(sample);
Questo verrà stampato in Bmodo che le prove samplee gli referToSampleoggetti facciano riferimento allo stesso riferimento di memoria.
StringBuilder sample = new StringBuilder();
StringBuilder referToSample = sample;
sample.append("A");
referToSample.append("B");
System.out.println(referToSample);
Questo verrà stampato ABche dimostra anche lo stesso.
StringBuilder sample = new StringBuilder();
StringBuilder referToSample = sample;
referToSample = null;
referToSample.append("A");
System.out.println(sample);
Ovviamente questo verrà generato NullPointerExceptionperché sto cercando di chiamare appendun riferimento nullo.
StringBuilder sample = new StringBuilder();
StringBuilder referToSample = sample;
referToSample = null;
sample.append("A");
System.out.println(sample);
Quindi ecco la mia domanda, perché l'ultimo esempio di codice non viene lanciato NullPointerExceptionperché quello che vedo e capisco dai primi due esempi è se due oggetti si riferiscono allo stesso oggetto, quindi se cambiamo un valore si rifletterà anche su un altro perché entrambi stanno puntando a stesso riferimento alla memoria. Allora perché questa regola non si applica qui? Se assegno nulla referToSample, anche il campione dovrebbe essere null e dovrebbe generare un'eccezione NullPointerException ma non ne lancia una, perché?




sampleè ancorasample. Sei solo cambiatoreferToSample.