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á Bpara que las pruebas sampley los referToSampleobjetos 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á ABque también prueba lo mismo.
StringBuilder sample = new StringBuilder();
StringBuilder referToSample = sample;
referToSample = null;
referToSample.append("A");
System.out.println(sample);
Obviamente, esto arrojará NullPointerExceptionporque estoy tratando de llamar appenda 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? NullPointerExceptionPorque 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 nulla referToSample, la muestra también debería ser nula y debería arrojar una NullPointerException pero no arroja una, ¿por qué?




sampleestá quietosample. Solo cambiastereferToSample.