Ordre d'appel / Membre statique
Bonjour,
Lors d'un entretien, je suis tombé sur une question à laquelle je n'avais pas le début d'une réponse.
Soit la classe suivante (de mémoire) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
public class Machin
{
{ system.out.println("1"); }
static
{
system.out.println("2");
}
public Machin()
{
system.out.println("3");
}
public static void main()
{
system.out.println("4");
Machin m = new Machin();
}
} |
Quel est l'ordre d'impression ?
J'ai répondu (je crois) : 2 4 1 3
Mais c'était au hazard. Une bonne âme connaitrait-elle les règles permettant de déterminer cet ordre à coup sur ?
ps : pourquoi utiliser, et dans quel cas, un bloc qui sort de nulle part, comme le bloc 1 ?
Merci