回答編集履歴
1
回答部分で足りないものを追記
answer
CHANGED
@@ -1,3 +1,25 @@
|
|
1
1
|
お使いの「Java SE 11 Silver [1Z0-815]対応問題集」(通称:黒本)はおそらく初版のものだと思います。本質問で挙げられている第12章-63問は訂正が入っていますので参照してみてください。(「5行目のif文の条件式がfalseと判定」は誤りです)
|
2
2
|
|
3
|
-
[徹底攻略Java SE 11 Silver問題集[1Z0-815]対応 お詫びと訂正 - インプレス](https://book.impress.co.jp/books/1118101186)
|
3
|
+
[徹底攻略Java SE 11 Silver問題集[1Z0-815]対応 お詫びと訂正 - インプレス](https://book.impress.co.jp/books/1118101186)
|
4
|
+
|
5
|
+
---
|
6
|
+
**ご質問に答えていない部分があったので追記しました:**
|
7
|
+
|
8
|
+
> y = 3であるにも関わらずなぜfalseとなるのでしょうか。
|
9
|
+
|
10
|
+
この点、本の記述が誤りであることは前述のとおりですが、
|
11
|
+
|
12
|
+
> また、この式では、変数xが初期化されることなく出力されてしまうため、コンパイルエラーとなると書いてあるのですが、ここでの変数xとは3行目のxをローカル変数と捉えればよろしいでしょうか。
|
13
|
+
|
14
|
+
はい、そうです。3行目の`int x;`はローカル変数の定義ですが、初期化はしていなく、そのまま11行目のコードで読み取ろうとしていることをコンパイラが検出した為に、コンパイルエラーが起きます。
|
15
|
+
```CMD
|
16
|
+
C>javac -version
|
17
|
+
javac 11.0.9
|
18
|
+
|
19
|
+
C>javac Main.java
|
20
|
+
Main.java:11: エラー: 変数xは初期化されていない可能性があります
|
21
|
+
System.out.println(x + ", " + y);
|
22
|
+
^
|
23
|
+
エラー1個
|
24
|
+
|
25
|
+
```
|