回答編集履歴

1

追記

2016/12/06 09:38

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

test CHANGED
@@ -9,3 +9,53 @@
9
9
  62行目で参照しているフィールドatがnullであるためです。
10
10
 
11
11
  (ヒントははこのフィールドatの初期化ができてないからです。)
12
+
13
+
14
+
15
+ ---
16
+
17
+ 追記:ご質問のプログラムのバグは煎じ詰めると以下のようなものです。
18
+
19
+
20
+
21
+ ```java
22
+
23
+ public class Test {
24
+
25
+ public static void main(String[] args) {
26
+
27
+ Test test = new Test();
28
+
29
+ test.method();
30
+
31
+ }
32
+
33
+
34
+
35
+ String s; // sはフィールド
36
+
37
+
38
+
39
+ Test() {
40
+
41
+ // ここで初期化しているsは本コンストラクターのローカル変数。フィールドsの初期化になっていない
42
+
43
+ String s = "a";
44
+
45
+ }
46
+
47
+
48
+
49
+ void method() {
50
+
51
+ // フィールドsには何も代入されていない(nullのまま)なので、s.length()を計算する際に例外となる
52
+
53
+ System.out.println(s.length()); // NullPointerException例外発生
54
+
55
+ }
56
+
57
+ }
58
+
59
+ ```
60
+
61
+