Nead aclaración para el siguiente código:
StringBuilder sample = new StringBuilder();
StringBuilder referToSample = sample;
referToSample.append("B");
System.out.println(sample);
Esto se imprimirá B
para que las pruebas sample
y los referToSample
objetos se refieran a la misma referencia de memoria.
StringBuilder sample = new StringBuilder();
StringBuilder referToSample = sample;
sample.append("A");
referToSample.append("B");
System.out.println(referToSample);
Esto imprimirá AB
que también prueba lo mismo.
StringBuilder sample = new StringBuilder();
StringBuilder referToSample = sample;
referToSample = null;
referToSample.append("A");
System.out.println(sample);
Obviamente, esto arrojará NullPointerException
porque estoy tratando de llamar append
a una referencia nula.
StringBuilder sample = new StringBuilder();
StringBuilder referToSample = sample;
referToSample = null;
sample.append("A");
System.out.println(sample);
Entonces, aquí está mi pregunta, ¿por qué la última muestra de código no arroja? NullPointerException
Porque lo que veo y entiendo de los primeros dos ejemplos es si dos objetos se refieren al mismo objeto, entonces, si cambiamos cualquier valor, también se reflejará en otro porque ambos apuntan a misma referencia de memoria. Entonces, ¿por qué esa regla no se aplica aquí? Si asigno null
a referToSample, la muestra también debería ser nula y debería arrojar una NullPointerException pero no arroja una, ¿por qué?
sample
está quietosample
. Solo cambiastereferToSample
.