Java Silver se11 紫本 5章の問題について
Q&A
Closed
解決したいこと
現在タイトルの書籍を学習中です。
以下の問題に対する解説の理解ができず、解説をさらに細かく解説して下さる方が
いらっしゃらないかと思いこちらに質問することにしました。
問題のコード
実行結果は「5 11」となる。
1 public class Main {
2 int x = 3;
3 static int y = 2;
4
5 public static void main(String[] args){
6 int x = 10;
7 int y = 10;
8 Main obj = new Main();
9 obj.printIt();
10 obj.printIt(y);
11 }
12
13 Main() { x = x+1;}
14 static { y += y;}
15
16 void printIt(){
17 System.out.print(++x);
18 }
19 void printIt(int y){
20 System.out.printIt(" "+ ++y);
21 }
22 }
書籍に記載の解説文章
8行目でMainクラスがロードされることにより14行目が実行され、
インスタンス化されることで、13行目が実行されます。
この時点でインスタンス変数xの値は4、static変数yの値は4です。
9行目の呼び出しにより16行目が実行され、
インクリメント化されてから出力なので、5です。
また、10行目では引数にy変数としていますが、これは7行目の変数yです。
10が引数として渡され、19行目が呼び出されます。
インクリメントされてから出力なので11です。
質問したいこと
上記の解説文章のなかで、
「8行目でMainクラスがロードされることにより14行目が実行され、
インスタンス化されることで、13行目が実行されます。」
の部分だけが理解できません。
それ以外の文章は処理の流れが理解できます。
補足までですが、1~4章の学習は住んでおり、練習問題を通して
練習問題内の解説で分からない箇所はない状態です。
なぜ、
「8行目でMainクラスがロードされることにより14行目が実行され、
インスタンス化されることで、13行目が実行されます。」
になるのか、解説文章よりかみ砕くことができるものかもわかりませんが、
ステップを踏んで教えていただきたいです。
また、上記2行が理解できないなら、これを復習した方がいい!というような
アドバイスがありましたらいただけますと助かります。