2017-04-23 5 views
-1

ローカル変数にあるデフォルト値を割り当てる必要がある場合、javaはローカルで宣言された配列のデフォルト値を提供するのはなぜですか?上記のコードでjavaの配列のデフォルト値は何ですか?

import java.util.Arrays; 
import java.util.Scanner; 

public class MatrixMultiplication { 

int a; 
int a1[][]=new int[2][2]; 

     public static void main(String[] args) { 

     int a2[][]=new int[2][2]; 
     int b; 

     MatrixMultiplication mm=new MatrixMultiplication(); 
     System.out.println(mm.a); 
     System.out.println(mm.a1[1][0]); 
     System.out.println(b); 
     System.out.println(a2[1][0]); 

    } 

}

同様varibleデフォルト値は0であり、bのために、我々は、値をsetsomeしなければなりません。ここまでのところ、a1 [] []に対して、各要素のdafult値は0です。ここまでは、デフォルト値ではなく、a2 [] []がローカル宣言されているので、要素はデフォルトでは初期化されませんJavaのルールはので、どのように彼らは0

+0

整数と浮動小数点のプリミティブの場合は0、ブール値がfalseの場合、他のすべての参照型の場合はヌルです。 (しかし、ローカル変数にはデフォルトはありません。ローカル配列を初期化する新しいオブジェクトを作成するには 'new'を呼び出します。これで要素が0に設定される方法は' new'です) – markspace

答えて

2

として各要素にデフォルトで初期化されますが、[] []ローカルその後、宣言されているA2とその要素は大きな違いがありますdeafltによって

initialosedすべきではありません変数と配列エントリ。

bは初期化されていないため、一般的なコーディングエラーであるため、コンパイラはそれを呼び出します。あなたのケースでは、

しかしa2が初期化され、そして配列が  — int[](またはa2[0])とinta2[0][0]のために)割り当てられた場合、配列の内容は、配列の要素型のデフォルト値に設定されています。

+0

thats私が求めていることそれがなぜローカルに宣言されたときに配列がデフォルト値に初期化されるのですか? – Ankit

+0

@Ankit:宣言された場所とは関係ありません。あなたは積極的にそれを作成しています: '新しいint [2] [2]'。 –

関連する問題