Java:如何检查数组中的元素是否已初始化?

时间:2010-11-18 07:01:08

标签: java

我想检查数组中的某个元素是否已初始化,我该怎么做?

5 个答案:

答案 0 :(得分:10)

创建数组时,将初始化数组中的所有值。

可以显式设置初始值(例如X[] xs = {x1, ..., xN};),或者在实例化数组时分配默认值。

对于一个对象数组,每个元素的默认值为null;对于boolean数组,值为false;对于bytecharintlong数组,值为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");
}