Quote Originariamente inviata da Barbarian Visualizza il messaggio
se dichiaro una variabile static int a, nel main del mio programma e provo a stamparla con System.out.println(a), il compilatore mi da errore.
Le variabili "locali" ai metodi(/costruttori) NON possono essere marcate static. E vanno inizializzate esplicitamente prima di poter essere usate.

Mentre invece:

codice:
public class UnaClasse {
    static int x;
    int y;
}

La x è una variabile "di classe", ovvero è associata alla classe, che è una sola e quindi ci sarà UNA sola variabile x per UnaClasse indipendentemente da quanti oggetti di tipo UnaClasse andrai a creare.

La y è una variabile "di istanza", ovvero è associata a ciascun oggetto della classe. Ogni oggetto di tipo UnaClasse ha la SUA propria variabile y, che può valere diversamente da quella degli altri oggetti UnaClasse.

Le variabili di classe e di istanza, se non inizializzate esplicitamente (es. static int x = 10; ) vengono inizializzate in automatico al loro valore di "default": 0 per tipi numerici/char, false per boolean e null per qualunque reference.