将NULL值显式设置为数组元素

时间:2013-08-18 07:35:08

标签: java

有人能告诉我为什么在显式设置数组元素的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。 我是对的吗?

8 个答案:

答案 0 :(得分:6)

正确。 int是一种基本类型,这意味着它包含一个显式值(从-2 ^ 31到2 ^ 31-1的数字),而不是引用,因此它不能是null 。如果您确实需要null值,请使用Integer

答案 1 :(得分:3)

你的数组

int[] a

是原始类型int。基元不能具有null值,而是具有默认值0.只有java中的对象可以为value。基元包括:byte,short,char,int,long,float,double.

答案 2 :(得分:3)

  

我假设因为它是一个int数组而且允许的文字值是0而不是NULL。我是对的吗?

如果您希望能够使用null,请将其设为Integer[]Integer是对象,可以设置为null,与基元(intchar等不同。)

答案 3 :(得分:2)

int原语类型,不能是null - 它必须有值。

唯一的选择是将其设置为您可以处理的值,例如“null”,例如-1

答案 4 :(得分: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.

答案 5 :(得分:0)

这是一个int数组。默认值int不为空,默认值为0,如果这是Integer数组,则可以设置null

答案 6 :(得分:0)

将数组声明为: Integer [] a = new Integer [5];

其余的应该按原样运作。

答案 7 :(得分:0)

Integer数组元素是值类型(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);
    }