Son métodos que no necesitan un objeto para invocarse.
Ejemplo 1: PruPunto.main(String[])
Ejemplo 2: Math.sqrt(double)
Ejemplo 3: un método que compara dos puntos
Punto p= new Punto(1,1); Punto q= new Punto(1,1); System.out.println(p==q); // false System.out.println(Punto.sonIguales(p,q)); // true
public class Punto {
...
public static boolean sonIguales(Punto p, Punto q) {
return p.x==q.x && p.y==q.y;
}
}
Cuidado!
public static boolean sonIguales(Punto p, Punto q) {
// return this.x==q.x && this.y==q.y;
return x==q.x && y==q.y;
}
Can't make a static reference to nonstatic variable x in
class Punto.Un método estático no puede usar this.
Dado que dentro de un método estático no existe this:
... x ... y // ˇNo!
... this.x ... this.y // ˇNo!
... p.x ... p.y // ˇSi!
... distanciaA(p) ... // ˇNo! ... this.distanciaA(p) ... // ˇNo! ... p.distanciaA(p) ... // ˇSi!
Son variables que no necesitan un objeto para examinarlas o modificarlas.
Ejemplo: System.out, System.in, System.err
Variables de instancia: hay una de ellas por cada objeto construido
Variables estáticas: una de ellas compartida por todos los objetos
public class Punto
{
int x,y;
static int count= 0;
int serie;
public Punto(int x, int y) {
this.x= x; this.y= y;
serie= count++;
}
public String toString() {
return "punto"+serie+"("+x+","+y+")";
}
...
}
Ejemplo de uso:
Punto p= new Punto(10,10); System.out.println(p); // punto0(10,10) Punto q= new Punto(1, 5); System.out.println(q); // punto1(1,5) Punto r= new Punto(0, 0); System.out.println(r); // punto2(0,0)