回答編集履歴

1

回答部分で足りないものを追記

2020/12/09 01:04

投稿

dodox86
dodox86

スコア9237

test CHANGED
@@ -3,3 +3,47 @@
3
3
 
4
4
 
5
5
  [徹底攻略Java SE 11 Silver問題集[1Z0-815]対応 お詫びと訂正 - インプレス](https://book.impress.co.jp/books/1118101186)
6
+
7
+
8
+
9
+ ---
10
+
11
+ **ご質問に答えていない部分があったので追記しました:**
12
+
13
+
14
+
15
+ > y = 3であるにも関わらずなぜfalseとなるのでしょうか。
16
+
17
+
18
+
19
+ この点、本の記述が誤りであることは前述のとおりですが、
20
+
21
+
22
+
23
+ > また、この式では、変数xが初期化されることなく出力されてしまうため、コンパイルエラーとなると書いてあるのですが、ここでの変数xとは3行目のxをローカル変数と捉えればよろしいでしょうか。
24
+
25
+
26
+
27
+ はい、そうです。3行目の`int x;`はローカル変数の定義ですが、初期化はしていなく、そのまま11行目のコードで読み取ろうとしていることをコンパイラが検出した為に、コンパイルエラーが起きます。
28
+
29
+ ```CMD
30
+
31
+ C>javac -version
32
+
33
+ javac 11.0.9
34
+
35
+
36
+
37
+ C>javac Main.java
38
+
39
+ Main.java:11: エラー: 変数xは初期化されていない可能性があります
40
+
41
+ System.out.println(x + ", " + y);
42
+
43
+ ^
44
+
45
+ エラー1個
46
+
47
+
48
+
49
+ ```