teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

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

2020/12/09 01:04

投稿

dodox86
dodox86

スコア9416

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
+ ```