我想检查数组中的某个元素是否已初始化,我该怎么做?
答案 0 :(得分:10)
创建数组时,将初始化数组中的所有值。
可以显式设置初始值(例如X[] xs = {x1, ..., xN};
),或者在实例化数组时分配默认值。
对于一个对象数组,每个元素的默认值为null
;对于boolean
数组,值为false
;对于byte
,char
,int
,long
数组,值为0
,数组为float
或{{1该值将为double
。
答案 1 :(得分:3)
那么,您可以检查它是否已设置为没有默认值,例如
String[] array = getArrayFromSomewhere();
if (array[10] != null)
{
...
}
(对于基本类型,您使用0
,'\0'
,false
等。)
然而,这与初始化不一样。在设置为不同的值后,它可能已设置为null。
Arrays没有记录元素是否已经被特别设置 - 元素都被初始化为默认值,而且都是。
答案 2 :(得分:0)
String[] X; // X has not been initialized
try {
System.out.println(""+X.length); // This will crash if X is not initialized
} catch (NullPointerException e) { // X is empty
System.out.println("X has not been initialized.");
// Do whatever you want here with X
}
答案 3 :(得分:0)
除了已经批准的答案之外,您还可以在jshell中使用java9+进行验证,因为它会告诉您默认的索引值。
原始数组
select tb1.id, tb2.id, tb2.name
from tb1
Left join tb2 on tb1.id = tb2.id
对象数组
jshell> byte[] data = new byte[10]
data ==> byte[10] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
jshell> int[] data = new int[10]
data ==> int[10] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
jshell> char[] data = new char[10]
data ==> char[10] { '\000', '\000', '\000', '\000', '\000' ... , '\000', '\000', '\000' }
jshell> boolean[] data = new boolean[10]
data ==> boolean[10] { false, false, false, false, false, ... lse, false, false, false }
答案 4 :(得分:-3)
简单的检查方式是:
int[] ar = new int[10];
if (ar.length < 0) {
System.out.println("Not initialized ");
} else {
System.out.println("Initialized");
}