CONSTANTES:
La palabra clave que java ha reservado para definir constantes
es la palabra "final". En java es muy simple definir constantes, solo
basta con ponerles el modificador final antes de la declaración del tipo. Al
definir un dato como constante le podremos asignar un valor por primera vez y luego
de eso no será posible cambiarle ese valor. Una vez inicializado el dato, este
no podrá cambiar su valor de ninguna forma.
MIEMBROS ESTÁTICOS DE UNA
CLASE:
El modificador 'static' tiene
un profundo impacto en el comportamiento de una variable o método por ello es
que normalmente se trata a este modificador completamente separado de los
demás. Para entender la forma en que un miembro estático (static)
trabaja, veremos primeramente una razón para la cual utilizarlo.
Imaginemos que se cuenta con una clase
de utilidad que tiene un método que siempre se ejecuta de la misma manera, por
decir un ejemplo, un método que siempre devuelve un valor aleatorio. No importa
qué instancia de la clase esté llamando a éste método, siempre se comportará de
la misma manera. En otras palabras, el comportamiento del método es
independiente de la instancia de la clase o, lo que es lo mismo, del
estado actual del objeto.
Imaginemos otro escenario. Supongamos
que se desea realizar un conteo de todas las instancias que se tienen de una
clase en particular, ¿dónde debería de almacenarse dicha variable? no
funcionará el mantenerla como una variable de instancia dentro de la clase a la
cual se quiere realizar el conteo ya que al momento de instanciarla el contador
se inicializará a su valor por defecto (como sucede con todas las variables de
instancia), entonces, ¿cómo haremos para realizar este conteo?
Para resolver un poco la situación
planteada anteriormente pongamos en claro que las variables y los métodos
marcados con el modificador 'static', es decir, variables y métodos
estáticos pertenecen a la clase, no a una instancia de dicha clase en
particular. De hecho, se pueden utilizar componentes estáticos sin tener una
instancia de la clase. Pero en caso de que existan instancias de dicha clase,
el componente estático de la misma será compartido por todas aquellas
instancias existentes en un momento dado; solo existe una copia.
El código a continuación declara y
utiliza una variable para nuestro contador estático: