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 : Sélectionner tout - Visualiser dans une fenêtre à part
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