gpt4 book ai didi

java - Java 特定的 NullPointerException

转载 作者:行者123 更新时间:2023-12-02 06:11:30 24 4
gpt4 key购买 nike

我有一个简短的问题,请告诉我为什么第一个示例不起作用而第二个示例起作用。示例之前的代码:

Tiles[] myTiles = new Tile[23];
number = 1;

第一个例子:

for(Tile tile : this.myTiles) {
if (number != this.myTiles.length) {
tile = new Tile(number, getResources().getColor(R.color.puzzle_default));
number++;
}
}

第二个例子:

for(Tile tile : this.myTiles) {
if (number != this.myTiles.length){
this.myTiles[number-1] = new Tile(number, getResources().getColor(R.color.puzzle_default));
number++;
}
}

如果我在类中的其他方法中使用下面的代码

this.myTiles[0].getNumber(); 

这是 NullPointerException。
但对于第二个示例来说,效果很好。

我真的不知道为什么。感谢您的回复

最佳答案

第一个循环创建每个对象的副本,相当于

for (int i=0; i < myTiles.length; i++) {
Tile tile;
...
tile = new Tile(...); // set local reference only
}

由于对象数组中的元素默认为 null,因此这些元素在循环范围之外将保持未分配状态。 myTiles 的原始元素保留其默认 null

关于java - Java 特定的 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21838871/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com