如何检查Java中是否存在变量?

时间:2011-07-22 15:15:02

标签: java null primitive

我只想在没有任何内容的情况下写一个变量。到目前为止,这是我的代码。

if (inv[0] == null) {
    inv[0]=map.getTileId(tileX-1, tileY-1, 0);
}

它给了我这个错误:

java.lang.Error: Unresolved compilation problem: 
The operator == is undefined for the argument type(s) int, null

9 个答案:

答案 0 :(得分:9)

inv是int[]int不能是null,因为它是primitive而不是引用。
int在java中被初始化为零。

答案 1 :(得分:5)

我假设invint[]

数组中没有“现有”值这样的概念。例如:

int[] x = new int[5];

完全的内容相同:

int[] x = new int[5];
x[3] = 0;

现在,如果您使用了Integer[],则可以使用空值来表示“未填充”...是您想要的吗?

数组总是用要开始的元素类型的默认值填充 - 对于null等引用类型,它是Integer

答案 2 :(得分:2)

我认为invint[]。您无法将intnull进行比较,null仅适用于引用类型,而不适用于基元。您必须为其指定某种标记值(0受欢迎,并且在创建数组时默认具有该值),或者将inv改为Integer[]Integer是引用类型,null - 能够。

答案 3 :(得分:2)

我假设从错误消息中,inv[]int的数组,并且java中的int不是对象,因此它不能具有null值。你必须将它与0(空int数组的每个索引的默认值)进行比较..

答案 4 :(得分:0)

Java中的原语不能为空。

答案 5 :(得分:0)

嗯...... int是原始类型。那不能是空的。

您可以检查数组的大小:

int [] arr = new int [10];    System.out.println(arr.size());

普通数组的索引从0到它们的大小 - 1,并且不能丢失任何值。 因此,在您的代码中,您要问的是int类型的第一个成员是null,这是不可能发生的 - 要么是数字,要么导致ArrayOutOfBoundsException

如果你想拥有一个类似于PHP或JavaScript的“稀疏数组”,你需要一个Map

Map<Integer, Integer> map = new HashMap();
map.put( 1, 324 );
if( map.get( 2 ) == null ) ...

答案 6 :(得分:0)

你可以试试这样的事情

Integer[] inv = new Integer[10];
inv[0] = 1;
inv[1] = 2;
    ....

if(inv[3] == null)
{
    inv[3] = getSomeValue();
}

答案 7 :(得分:0)

错误是因为invint的数组,而不是对象包装器Integer。无论如何,你的阵列都会为你初始化。如果你写了

int[] inv = new int[5];

你将有一个5个零的数组。

您应该使用一些您知道无效的值来自己初始化数组(例如,如果您有一个年龄数组,则负值将无效)。检查无效值,如果有,请将其替换。

答案 8 :(得分:-1)

原始类型无法与null进行比较。

您可以测试数字是否&gt; 0以查看是否存在值:

if(inv[0] <= 0)
{
    inv[0]=map.getTileId(tileX-1, tileY-1, 0);
}