Red de conocimiento informático - Problemas con los teléfonos móviles - String str = new String("hello"); str ="Java"; ¿Cuántos objetos destruyen estas dos líneas de código?

String str = new String("hello"); str ="Java"; ¿Cuántos objetos destruyen estas dos líneas de código?

5.

Hay una cantidad directa de "hola" en el grupo. Cree un nuevo objeto a partir de esta cadena (existente en el montón) y asígnelo a str. Estos ya son dos objetos. El literal "java" existe en el grupo. tres.

Elimine "java" del grupo, luego elimine la cadena original, "hello", del montón y agréguela a una nueva cadena "hellojava" (existente en el grupo). Esta nueva cadena es luego se asigna a la variable str (que existe en el montón). ***5.

freish es muy inteligente. Esta vez es suyo.

Cabe señalar que la primera aparición de un literal de cadena creará una nueva cadena en el grupo. Las apariciones posteriores de la cadena no crearán una nueva cadena, sino que apuntarán la referencia directamente a la primera cadena. Un objeto creado. Pero para los objetos nuevos, sin importar cuán asignados estén, se crean una vez (en el montón), independientemente de si el mismo objeto existió antes. Además, las cadenas no se pueden agregar, por lo que cada vez que usa el símbolo de concatenación, está creando efectivamente una constante, asignándola a una referencia, y la cadena original se recolecta como basura.