2013-08-18 58 views
2

有人能告訴我爲什麼我得到編譯錯誤以便將NULL值顯式設置爲數組元素?將NULL值明確設置爲數組元素

class array_1 
{ 

public static void main(String args[]) 
{ 

int[] a = new int[5]; 

a[0]=1; 
a[2]='a'; 
a[3]=null; //Compiler complains here 


for(int i : a) System.out.println(i); 

} 

} 

我假設是因爲它的一個int數組,並且允許的字面值是0而不是NULL。 我對不對?

+1

這是因爲int是一種原始的。應該使用「Integer」代替int –

+0

DUPLICATE:http://stackoverflow.com/questions/11047276/null-for-primitive-data-types –

回答

3

你的陣列

int[] a 

是原始類型int的。基元不能具有null值,而是具有默認值0.只有在java中的對象可以具有空作爲value。原基包括:byte,short,char,int,long,float,double.

3

我假設因爲它的一個int數組,並且允許的字面值是0而不是NULL。我對嗎 ?

是。

如果您希望能夠使用null,請將其設爲Integer[]Integer s是可以設置爲null的對象,與基元不同(int,char等)。

4

正確。 int是一個原始類型,這意味着它包含一個顯式值(一個從-2^31到2^31-1的數字),而不是一個引用,所以它不能是null。如果您確實需要null值,請使用Integer

2

int基元類型,它不能是null - 它必須有一個值。

唯一的選擇是將其設置爲一個值,您可以對待像「null」,例如-1

+0

或者使用Integer代替 – Doorknob

0

這是一個int數組。默認值int不爲空默認值爲0,如果這是Integer數組,則可以設置null

1
 int[] a = new int[5]; 

聲明的數組的類型是int類型,它是像byte,short,long,float,double,char和boolean這樣的基本類型。基元不能具有空值,而是具有如下所示的默認值:

byte = 0; 
    short = 0; 
    int = 0; 
    long = 0l; 
    float = 0.0f 
    double = 0.0d 
    boolean = false; 

原始類型的範圍公式如下所述。基元只能接受落入這個範圍的值。

-2^(N - 1) to 2^(N - 1)-1 
    where N stands for no. of bits that each primitive type takes 

只有java中的對象可以有null值作爲值。如果你反正要那麼,更好的利用包裝類像

Byte, Short, Integer, Long, Character, Boolean, etc. 
0

聲明數組爲: 整數[] A =新的整數[5];

其餘的應該按原樣工作。

0

整數數組元素是值類型(Int類型),因此它們將分配給它們的值存儲在內存位置中。如果你想僞造一個空值,你可以嘗試給元素賦值-1。

嘗試這樣的事情......

public static void main(String[]args){ 
     int a[][]={{4,3,2,1},{0,-1,-1,-1},{0,-1,-1,-1}}; 
     printStatus(a); 
     procesar(a); 
     printStatus(a); 
    } 

    public static void procesar (int a[][]) 
{ 
int temp, tope0, tope1, tope2; 
tope0 = ((a[0].length)-1); 
tope1 = 0; 
tope2 = 0; 

while(a[0][tope0] >= 0){ 

    if(a[2][tope2]==0){ 
     System.out.println(a[2][tope2]); 
     temp=a[0][tope0]; 
     a[2][tope2] = temp; 
     a[0][tope0] = 0;  
     tope0= tope0 -1;  
     tope2 = tope2 +1 ; 
     System.out.println(a[0][tope0]+ " "+a[1][tope1] +" "+ a[2][tope2 -1]); 
     printStatus(a); 
    } 
    System.out.println(a[0][tope0]+ " "+ a[2][(tope2-1)]); 
    if((a[2][(tope2 -1)]> a[0][tope0])){ 
     temp=a[0][tope0]; 
     a[2][tope2] = temp; 
     a[0][tope0] = 0;  
     tope0= tope0 -1;  
     tope2 = tope2 +1 ; 
     System.out.println(a[0][tope0]+ " "+a[1][tope1] +" "+ a[2][tope2 -1]); 
     printStatus(a); 
    } 

    if(a[1][tope1]==0){ 
     System.out.println(a[1][tope1]); 
     temp = a[0][tope0]; 
     a[1][tope1]= temp; 
     a[0][tope0]= 0; 
     tope0= tope0 -1; 
     tope1 = tope1 +1; 
     System.out.println(a[0][tope0]+ " "+a[1][tope1 - 1] +" "+ a[2][tope2 -1]); 
     printStatus(a); 
    } 
    System.out.println(a[0][tope0]+ " "+ a[1][(tope1-1)]); 
    if(a[1][(tope1-1)]> a[0][tope0]){ 
     temp = a[0][tope0]; 
     a[1][tope1]= temp; 
     a[0][tope0]= 0; 
     tope0= tope0 -1; 
     tope1 = tope1 +1; 
     System.out.println(a[0][tope0]+ " "+a[1][tope1 - 1] +" "+ a[2][tope2 -1]); 
     printStatus(a); 
    } 
相關問題