variable usar qué método metodos metodo instancia estaticos cuando clase java static instance-variables class-variables

usar - variable de clase java



Cuál es la diferencia entre una instancia y una variable de clase(estática) en Java (3)

Una variable estática almacena un valor que se comparte entre todas las instancias (o la no instancia) de la clase en la que está definido. Donde, como variable de instancia por nombre, crea una nueva copia cada vez que se crea el nuevo objeto.

El título de esta pregunta es en realidad una pregunta de examen anterior y estoy buscando una aclaración / respuesta.

Tenga en cuenta que estoy aprendiendo Java y estoy familiarizado con su sintaxis.

Entiendo que es posible que esta pregunta ya haya sido formulada antes y, de ser así, ¿puede alguien mostrarme dónde puedo acceder a la pregunta si es posible? También acepte mis disculpas si este es el caso. Para demostrar que he estado investigando esta área, mi propio entendimiento es que las variables de instancia pertenecen a los objetos / instancias de una cierta clase (plantilla) y pueden cambiarse (mutar) dentro de esa instancia / objeto cuando sea necesario.

Una variable de clase es una variable que tiene solo una copia y se puede acceder pero no modificar (¿mutar?), Pero ¿está disponible para todas las clases?

¿Estoy en el camino correcto aquí?

Además, ¿qué hace exactamente lo ''estático''? ¿Es una instancia de una clase solo estática si reside dentro de la instancia principal de una clase?

Muchas gracias.


Puedes hacer varias instancias de tu clase. Cuando declara una variable de instancia, cada instancia obtiene su propia copia única de esa variable. Cuando declara una variable estática, es la misma variable y valor para todas las instancias.

public class Foo { public int instanceVariable; public static int staticVariable; } Foo instance1 = new Foo(); Foo instance2 = new Foo(); instance1.staticVariable = 1; instance1.instanceVariable = 2; instance2.instanceVariable = 3; instance1.staticVariable == 1 // true instance2.staticVariable == 1 // true instance1.instanceVariable == 2 //true instance2.instanceVariable == 3 //true


Todas las instancias de la clase comparten una variable estática, mientras que una variable de instancia es única para cada instancia de la clase.

La memoria de una variable estática se asigna en tiempo de compilación, se cargan en el tiempo de carga y se inicializan en el tiempo de inicialización de la clase. En el caso de una variable de instancia, todo lo anterior se realiza en tiempo de ejecución.

Aquí hay un ejemplo útil:

Una variable de instancia es una por objeto: cada objeto tiene su propia copia de su variable de instancia.

public class Test{ int x = 5; } Test t1 = new Test(); Test t2 = new Test();

Tanto t1 como t2 tendrán su propia copia de x.

Una variable estática es una por clase: cada objeto de esa clase comparte la misma variable estática.

public class Test{ public static int x = 5; } Test t1 = new Test(); Test t2 = new Test();

Tanto t1 como t2 compartirán la misma x.