回答編集履歴
1
回答部分で足りないものを追記
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
|
+
```
|