Bonjour,
Je me pose la question suivante, pourquoi ce code peut être compilé ?
(JavaSE-10)
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
22
23
24
25
26
27
28
29
30
31
32 public class Panneau extends JPanel{ private static final long serialVersionUID = -6727483609391796566L; { int x=0; System.out.println("Ne devrait pas compiler ?"+"x= "+x); } public Panneau(){ } @Override public void paintComponent(Graphics g) { int y1=getHeight(); int x1=getWidth(); System.out.println("x1="+x1+" y1="+y1); g.drawOval(x1/4,y1/4, x1/2,y1/2); } }
C'est cette partie qui m'interroge, théoriquement: Le System.out.println, ne devrait pas compiler (lancé hors de toute méthode)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 int x=0; System.out.println("Ne devrait pas compiler ?"+"x= "+x);
Celui-ci ne compile pas : (comme attendu)
(J'ai supprimé les accolades du bloc en début de classe)
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
22
23
24
25
26
27
28
29
30
31
32 import java.awt.Graphics; import javax.swing.JPanel; public class Panneau extends JPanel{ private static final long serialVersionUID = -6727483609391796566L; int x=0; System.out.println("Ne compile pas"+"x= "+x); public Panneau(){ } @Override public void paintComponent(Graphics g) { int y1=getHeight(); int x1=getWidth(); System.out.println("x1="+x1+" y1="+y1); g.drawOval(x1/4,y1/4, x1/2,y1/2); } }
Merci pour vos réponses.
Partager