estaticas java variables static final modifiers

estaticas - final y estático en Java



static int java (4)

Consulte la sección ''Constantes'' para obtener una explicación en esta página:

http://download.oracle.com/javase/tutorial/java/javaOO/classvars.html

He leído esta oración en un libro pero no la entendí:

Un campo que es tanto estático como final tiene solo una pieza de almacenamiento que no se puede cambiar.

¿Alguien me lo puede explicar?


La fuente de su confusión puede ser que la palabra "estática" en inglés y su significado en Java están apenas relacionadas.

Una variable definida en una clase Cat de la manera "normal" puede denominarse una variable de instancia.

class Cat { int weight; }

Cada vez que crea un nuevo objeto de tipo Cat, crea una nueva copia de la variable ''peso''. Si crea 10 objetos del tipo Cat, cada uno tiene su propia copia de la variable de peso.

Una variable ''estática'' puede considerarse como una variable de nivel de clase, a diferencia de una variable de instancia. Una variable estática tiene una sola copia y pertenece a la clase Cat, en lugar de haber una copia para cada objeto de tipo Cat.

class Cat { static String speciesName; int weight; }

Aquí, sin importar cuántos objetos del tipo Cat creamos, solo hay una copia de speciesName.

Si la variable estática también es ''final'', entonces esta copia de la variable es la única pieza de almacenamiento que no se puede cambiar. Si la variable ''peso'' fuera final en el ejemplo anterior, habría 10 unidades de almacenamiento que no se podrían cambiar, una para cada objeto de tipo Cat que habíamos creado.


Una variable static es común para todas las instancias de la clase. Una variable final no puede cambiar después de que se haya establecido la primera vez.

Por lo tanto, una variable static final en Java es común para todas las instancias de la clase, y no se puede cambiar después de que se haya establecido la primera vez.

class Car { static final int numberOfWheels = 4; Color color; public Car(Color color) { this.color = color; } } Car redCar = new Car(Red); Car blueCar = new Car(Blue);

Cada automóvil ahora tiene un color propiedad individual y variable y comparten la propiedad numberOfWheels que no se puede cambiar.


  • Los medios finales no pueden reasignar valor a ninguna variable
  • Estático significa que solo una copia de referencia puede estar completa en la clase de todos los métodos.