String str = new string("hello"); str+= "Java"; ¿Cuántos objetos hay en estos dos códigos?
La cantidad directa "hola" se almacena en el pool. Cree un nuevo objeto (almacenado en el montón) a partir de esta cadena y asígnelo a str. Ya son dos. La cantidad directa "java" se almacena en el grupo. Tres.
Tome "java" del grupo, luego tome la cadena original, que es "hola", del montón, agréguela para convertirla en una nueva cadena "hellojava" (almacenada en el grupo) y luego agregue esto La nueva cadena se asigna a la variable str (almacenada en el montón). ***5.
Fresh tiene mucho talento. Éste es suyo.
Cabe señalar que se creará una nueva cadena literal en el grupo cuando aparezca por primera vez. No se volverá a crear después de que aparezca, y la referencia apuntará directamente al objeto creado. por primera vez. Sin embargo, no importa cómo se asigne el nuevo objeto, el nuevo objeto sólo se crea una vez (en el montón), independientemente de si el mismo objeto ya existía antes. Además, no se pueden agregar cadenas, por lo que cada vez que usa el símbolo de conexión, en realidad es equivalente a generar una constante primero y luego asignarla a una referencia. La cadena a la que originalmente se apuntaba se recolecta como basura.