Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 数组初始化零与指定零_Java - Fatal编程技术网

Java 数组初始化零与指定零

Java 数组初始化零与指定零,java,Java,我有一个简单的问题,我似乎找不到答案。我认为这真的很简单,我可以把它看作是语言怪癖 int[] newArray=new int[5]; 将初始化一个数组,并且在所有5个位置都有零 newArray[4]=0; //versus not assigning any value to specific position newArray[4] 两个人是一回事吗?如果没有,如何区分这两者 如何区分创建阵列时自动放置的零与程序中某个点指定的零 我问这个问题的主要原因是我有一个程序,在数组中的任

我有一个简单的问题,我似乎找不到答案。我认为这真的很简单,我可以把它看作是语言怪癖

 int[] newArray=new int[5];
将初始化一个数组,并且在所有5个位置都有零

newArray[4]=0; 
//versus not assigning any value to specific position newArray[4]
两个人是一回事吗?如果没有,如何区分这两者

如何区分创建阵列时自动放置的零与程序中某个点指定的零


我问这个问题的主要原因是我有一个程序,在数组中的任意位置分配一些整数值,也可以是0。搜索时,我想知道哪些零是由程序分配的,哪些是初始化的零。

由于将
int
s放入数组中,它们是等效的,因为
int
的默认值是0。您将无法区分这两者,因为0等于0

但是,如果使用
Integer
,数组将初始化为
null
s。在这种情况下,您可以判断是否设置了值


如果您希望能够区分差异,可以使用引用。

因为您在数组中放置了
int
s,它们是等效的,因为
int
的默认值是0。您将无法区分这两者,因为0等于0

但是,如果使用
Integer
,数组将初始化为
null
s。在这种情况下,您可以判断是否设置了值


如果您希望能够区分差异,可以使用引用。

int[]newArray=newint[5]
默认情况下将所有元素初始化为0

newArray[4]=0
将第5个元素的值设置为0。所有其他的都将默认。所以两者之间没有区别

要理解此集合,请改为
newArray[4]=10


现在数组内容是
{0,0,0,0,10}

int[]newArray=newint[5]
默认情况下将所有元素初始化为0

newArray[4]=0
将第5个元素的值设置为0。所有其他的都将默认。所以两者之间没有区别

要理解此集合,请改为
newArray[4]=10


现在数组内容是
{0,0,0,0,10}

为什么说怪癖?很明显,在Java中,每个引用和原语都有一个初始默认值。对于int,它是
0
。对于引用,它是
null

为什么说quirk?很明显,在Java中,每个引用和原语都有一个初始默认值。对于int,它是
0
。对于引用,它是
null

如果将变量作为类的成员进行实例,它将具有默认值:0表示数字,null表示对象。但若在方法中声明该变量,编译器不会为此变量指定默认值,所以在您设置它之前,它的内容是未查找的


所以如果你在一个方法中做,它是不等价的;-)

如果将变量作为类的成员进行实例,它将具有默认值:0表示数字,null表示对象。但若在方法中声明该变量,编译器不会为此变量指定默认值,所以在您设置它之前,它的内容是未查找的


所以如果你在一个方法中做,它是不等价的;-)

结果是一样的。所有0都被创建为相等。除了讨厌的负0,结果是相同的。所有的0都是相等的。除了讨厌的负数0So,int[]newArray=newint[5];方法内部将保留所有未定义的位置!!!因此,int[]newArray=newint[5];方法内部将保留所有未定义的位置!!!