表題の件、2つのコードの出力結果を載せています。
コード1:配列初期化時にnull
を設定
コード2:配列初期化自に"X"
を設定後、null
を代入
質問:以下の認識で合っているでしょうか。
①
コード1は参照なしを表すリテラル nullとなっているため、そもそもstr[1]という要素が確保できていない。そのため処理途中でNullPointerException
が発生する。
②
コード2は初期化時の"X"
でstr[1]という要素は確保されており、代入で要素の中身がnull
になっているだけなので、null
というデータ1つ分、total
に加算される。
コード1
java
1public static void main(String[] args) { 2 String[][] str = {{"A", "B"}, null, {"C", "D", "E"}}; 3 int total = 0; 4 5 for(String[] s : str) { 6 total += s.length; 7 System.out.println(total); 8 } 9}
◆結果◆
2
Exception in thread "main" java.lang.NullPointerException
コード2
java
1public static void main(String[] args) { 2 String[][] str = {{"A", "B"}, {"X"}, {"C", "D", "E"}}; 3 int total = 0; 4 5 str[1][0] = null; 6 7 for(String[] s : str) { 8 total += s.length; 9 System.out.println(total); 10 } 11}
◆結果◆
2
3
6
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/28 03:00