la parola chiave static serve a identificare un metodo o un attributo di classe.
esempio
nel main se scrivi System.out.println(Prova.i); non ti da errore perchè i è un attributo della classe Prova se invece System.out.println(Prova.j); ti darà errore perchè j è un attributo di istanza ed è quindi necessario instanziare una variabile di tipo Provacodice:public Class Prova { public static int i=0; public int j=0; public Prova() { i++; j++; } }
inoltre prova a vedere cosa ti stampa se nel main fai questo
Prova a=new Prova();
System.out.println("I valori i e j nell'istanza a hanno valore "+a.i+" e "+a.j);
Prova b=new Prova();
System.out.println("I valori i e j nell'istanza b hanno valore "+b.i+" e "+b.j);
//OUTPUT
I valori i e j nell'istanza a hanno valore 1 e 1
I valori i e j nell'istanza b hanno valore 2 e 1