有人能告诉我为什么在显式设置数组元素的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。 我是对的吗?
答案 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
,与基元(int
,char
等不同。)
答案 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);
}