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];方法内部将保留所有未定义的位置!!!