2017-04-23 28 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.直到這裏,一切都被理解爲它們具有deafult值,但是由於a2 [] []是局部聲明的,所以它的元素不應該默認初始化爲java的規則,以便它們是如何被初始化默認情況下,每一個元素爲0

+0

對於整數和浮點基元,它是0,對於布爾值「false」,對於所有其他引用類型,它是「null」。 (但是對於局部變量,沒有默認值,你調用'new'來創建一個新的對象,這會初始化本地數組,所以這就是元素被設置爲0的方式,'new'就是這樣。) – markspace

回答

2

但作爲A2 [] []是局部聲明那麼它的元件不應該initialosed通過deaflt

有一個很大的區別一個變量和一個數組入口。

b未初始化是一種常見的編碼錯誤,因此編譯器會將其調出。

但是a2被初始化,並且當陣列被分配  — int[](或a2[0])和int(對於a2[0][0])的陣列的內容被設置爲默認值的數組元素類型,你的情況。

+0

這就是我所要求的那麼爲什麼在本地聲明時將數組初始化爲默認值 – Ankit

+0

@Ankit:它與聲明的位置無關。你正在積極創建它:'new int [2] [2]'。 –

相關問題