Il significato di static
Il fatto che il metodo main e' statico, genera di solito dei problemi
per i principianti che ancora non capiscono bene il significato della dichiarazione static.
Ecco un tipico caso di programma che genera,quando viene compilato, un misterioso errore sul fatto che non potete accedere in un metodo statico a una variabile
non statica.
public class temp
{
int MyArr [] = new int[4];
public static void main(String args[])
{
for(byte i=0;i<4;i++)
{
MyArr[i] = 2*i;
System.out.println(MyArr[i]);
}
}
}
Potete risolvere il problema in 2 modi:
- Rendendo la variabile MyArr anch'essa statica.Ma allora,
fate attenzione, perche' essa verra' creata in un'unica copia ,anche se
instanziate piu' oggetti della classe temp.
public class temp
{
static int MyArr [] = new int[4];
public static void main(String args[])
{
for(byte i=0;i<4;i++)
{
MyArr[i] = 2*i;
System.out.println(MyArr[i]);
}
}
}
- Invece questa e' la soluzione piu' corretta,anche se per il principiante
e' sorprendente:instanziate l'oggetto contenente il metodo main!
public class temp1
{
int MyArr [] = new int[4];
public static void main(String args[])
{
temp1 a = new temp1();
for(byte i=0;i<4;i++)
{
a.MyArr[i] = 2*i;
System.out.println(a.MyArr[i]);
}
}
}