我有一个简单的问题,我似乎没有找到答案。我认为这很简单,我可以把它当成语言怪癖。
int[] newArray=new int[5];
将初始化一个数组并在所有5个位置都包含全部零。
newArray[4]=0;
//versus not assigning any value to specific position newArray[4]
是两回事吗?如果没有,如何区分这两者?
如何区分创建数组时自动放置的零与在某个时刻在程序中分配的零?
我问这个的主要原因是我有一个程序在数组中的随机位置分配一些整数值,也可以是0.在搜索时,我想知道程序分配了哪些零,哪些是初始化零
答案 0 :(得分:2)
由于您在数组中添加了int
,因此默认值为int
0 。您将无法区分这两者,因为 0 等于 0 。
如果您使用Integer
,则数组将使用null
进行初始化。在这种情况下,您可以判断是否设置了值。
如果您希望能够分辨出差异,可以使用参考文献。
答案 1 :(得分:1)
int[] newArray=new int[5]
会将所有元素初始化为0。
newArray[4]=0
会将第5个元素的值设置为0.默认情况下,所有其他元素都是默认值。所以两者之间没有区别。
要理解此集newArray[4]=10
。
现在数组内容为{0,0,0,0,10}
答案 2 :(得分:1)
你为什么说怪癖?很明显,每个引用和原语在Java中都有一个初始默认值。对于int,它是0
。对于参考,它是null
。
答案 3 :(得分:0)
如果将变量实例化为类的成员,则它将具有默认值:数字为0,对象为null。但是如果在方法中声明该变量,编译器不会为此变量分配默认值,因此在设置之前其内容是不定的。
因此,如果您在方法中执行此操作,则不等效; - )