what new metodos funciones example java string object instance

new - string options java



Crear objeto inmutable, instanciado sin nuevo (3)

Esta pregunta ya tiene una respuesta aquí:

¿Puedo crear una clase que se ejecute solo con el operador = , como lo hace la clase String ? ¿O es una característica específica de String clase String en Java?



String s = "Hello World!" código String s = "Hello World!" no crea una nueva String . Asigna una referencia de una String existente en el grupo de cadenas a s . Si la String no existe en el grupo de cadenas, entonces se crea un nuevo objeto de cadena en el grupo de cadenas, pero no con el operador = solo.

Esto crea nuevos objetos de String :

String s1 = new String("Hello World!"); // new Object String s2 = new String("Hello World!"); // new Object System.out.println(s1 == s2); // false

Esto puede o no crear un nuevo objeto String en String Pool:

String s1 = "Hello World!"; String s2 = "Hello World!"; System.out.println(s1 == s2); // true

Podría acercarse bastante al comportamiento mencionado anteriormente con el uso del patrón getInstance() , considere esto:

public class Singleton { private Singleton(){} private static class SingletonHelper{ private static final instance INSTANCE = new Singleton(); } public static Singleton getInstance() { return SingletonHelper.INSTANCE; } }

Entonces podrías usar:

Singleton s = Singleton.getInstance();


No, no puede crear una clase que se ejecute solo con el operador = porque no puede sobrecargar un operador en Java como puede hacerlo en C ++ o C # (consulte Sobrecarga del operador en Java ).

String se crean una instancia cuando se usa "something" solo si no existe en la memoria, por lo que se obtiene una referencia al mismo objeto de String exacto cada vez que se escribe "something" .

Por ejemplo, si lo hace:

String a = "something"; String b = "something";

Entonces

a == b; // will be true.

Puede consultar estas preguntas para obtener más información sobre cómo funcionan los objetos String :