Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.
Métodos estáticos
No precisan de una instancia para ser invocados.
public class MetodosStatic {
public static void main(String[] args) {
ClaseConMetodoStatic.saludar("Pepe");
}
}
class ClaseConMetodoStatic{
public static void saludar(String nombre){
System.out.println("Hola " + nombre);
}
}
Si llamo a un método static desde una instancia, me da un warning, pero compila.
public class MetodosStatic {
public static void saludar(String nombre){
System.out.println("Hola " + nombre);
}
public static void main(String[] args) {
MetodosStatic metodosStatic = new MetodosStatic();
metodosStatic.saludar("Pepe");
}
}
Los métodos static no pueden usar las características no static de una clase. El siguiente código no compila.
public class I_notaMetodosStaticII {
String variableNoEstatica = null;
public static void saludar(String nombre){
variableNoEstatica = "Rodolfo";
}
}
Variables estáticas
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); // 2
System.out.println(variableStatic_1.variableNoEstatica); // 1
System.out.println(variableStatic_2.variableNoEstatica); // 1
}
}
Ejercicio: calculadora con métodos static
Rehacer la calculadora, pero convirtiendo sus cuatro métodos en static.
static int sumar(int a, int b){
return ...
}
static int restar...
static int multiplicar...
static int dividir...
public static void main(String [] args){
BufferedReader br = ...
...
int n1 = ...
int n2 = ...
String op = ...
int resultado = 0;
if( op ...){
resultado = sumar(...);
}else if(op ...){
}...
System.out.println(resultado);
}