Modificador static

Métodos static

No precisan de una instancia para ser invocados.

public class G_metodosStatic {
	public static void saludar(String nombre){
		System.out.println("Hola " + nombre);
	}
	public static void main(String[] args) {
		G_metodosStatic.saludar("Pepe");
	}
}

Si llamo a un método static desde una instancia, me da un warning, pero compila.

public class H_notaMetodosStatic {
	public static void saludar(String nombre){
		System.out.println("Hola " + nombre);
	}
	public static void main(String[] args) {
		G_metodosStatic g_metodosStatic = new G_metodosStatic();
		g_metodosStatic.saludar("Pepe");
	}
}

Los métodos static no pueden usar las características no static de una clase.

public class I_notaMetodosStaticII {

	String variableNoEstatica = null;
	public static void saludar(String nombre){
		variableNoEstatica = "Rodolfo";
	}
}

Ejercicio

Rehacer la calculadora, pero convirtiendo sus cuatro métodos en static.

Tipos de variables por su posición

public class VariablesSegunPosicion {
	/*
	* VARIABLES MIEMBRO O DE INSTANCIA
	* 
	* - Se crean al hacer una instancia de la clase.
	* - Se destruyen cuando el garbage colector destruye dicha instancia. 
	* - Si no las inicializo, se inicializan solas, ya sea con el valor 0 o null según el caso.
	* 
	*/
	
	String variableMiembro;
	
	public void metodo(){
		/*
		*VARIABLES LOCALES O AUTOMATICAS
		* 
		* - Se crean cuando se lee su línea en el método. 
		* - Se destruyen cuando termina de leerse dicha variable.
		* - Debo inicializarlas para poder usarlas.
		*
		*/	
		
		String variableAutomatica=null;

		/*
		*VARIABLES DE CLASE
		* 
		* - Usan el modificador static. 
		* - Su valor es compartido por todas las instancias de la clase
		* 
		*/	
		
		String variableAutomatica=null;


	}
}

Variables static

Van precedidas del modificador static.

El modificador static permite acceder a las variables y métodos aunque no tengamos una instancia del objeto que los contiene.

Al contrario que con las variables no static, no habrá una por cada instancia de una clase, sino una para todas las instancias de la clase.

public class VariableStatic {
	static int variableEstatica = 0;
	int variableNoEstatica = 0;
	public static void main(String [] args){
		//Incrementamos la variable estática
		VariableStatic.variableEstatica++;
		VariableStatic.variableEstatica++;

		//Incrementamos la variable no estática
		VariableStatic  variableStatic_1 = new VariableStatic();
		VariableStatic  variableStatic_2 = new VariableStatic();

		variableStatic_1.variableNoEstatica++;
		variableStatic_2.variableNoEstatica++;

		//Mostramos resultados
		
		System.out.println(VariableStatic.variableEstatica);
		System.out.println(variableStatic_1.variableNoEstatica);
		System.out.println(variableStatic_2.variableNoEstatica);
		
	}
}
  1. ¿Qué es Java?
  2. Eclipse
  3. Resolución de problemas
  4. Clases
  5. Objetos
  6. Hola mundo
  7. Comentarios
  8. Variables
  9. Constantes
  10. Operadores
  11. Lectura de datos
  12. Ejercicios con operadores aritméticos
  13. Estructuras de control
  14. Métodos
  15. Modificador static
  16. Arrays
  17. Ejercicio – juego del ahorcado
  18. Ejercicio - tres en raya
  19. Modificadores de acceso
  20. Constructores
  21. Herencia
  22. Polimorfismo
  23. Abstracción
  24. Interfaces
  25. Clases internas
  26. Garbage Collector
  27. String performance
  28. Encapsulación
  29. Contenedores
  30. Genéricos
  31. Ejercicio alta, baja, modificación y consulta en un ArrayList
  32. Ejercicio – juego de la oca
  33. Recorrer un map
  34. Sobreescritura equals
  35. Sobreescritura hashcode
  36. Sobreescritura compareTo
  37. Excepciones
  38. Implementar Serializable
  39. Enumeraciones
  40. Hilos
icono de mandar un mail¡Contacta conmigo!
contacta conmigoPablo Monteserín

¡Hola! ¿En qué puedo ayudarte?