Java 为什么我得到空对象数组的NullPointerException,但该对象有一个默认构造函数?
对于我创建的尚未初始化的对象数组,我不断得到一个Java 为什么我得到空对象数组的NullPointerException,但该对象有一个默认构造函数?,java,arrays,object,constructor,nullpointerexception,Java,Arrays,Object,Constructor,Nullpointerexception,对于我创建的尚未初始化的对象数组,我不断得到一个NullPointerException。但是我的player类有一个默认构造函数,所以我认为它可以。为什么我不能用这些对象调用实例方法 我的主代码块: public class Blackjack{ public static void main(String[] args){ Player[] p; p = new Player[6]; } } 这是我的播放器构造函数: public class Player {
NullPointerException
。但是我的player类有一个默认构造函数,所以我认为它可以。为什么我不能用这些对象调用实例方法
我的主代码块:
public class Blackjack{
public static void main(String[] args){
Player[] p;
p = new Player[6];
}
}
这是我的播放器构造函数:
public class Player {
private int money;
private int bet;
private int handValue;
// Player Constructor
public Player() {
handValue = 0;
money = 100;
this.bet = 0;
}
}
实例化数组后,必须使用以下命令实例化数组的每个元素:
p[i] = new Player();
在您可以调用这些元素的方法之前,因为在您这样做之前,
p[i]
为每个i
Player[]p;p=新玩家[6]
这将使p
引用6个空元素的数组<代码>新玩家[6]代码>不运行构造函数您的代码创建了一个大小为6
Player[] p;
p = new Player[6];
p
现在是:{null,null,null,null,null}
相反,您希望用播放器对象填充此数组,请尝试以下操作:
Player[] p = new Player[6];
for (int i = 0; i < p.length; i++){
p[i] = new Player();
}
Player[]p=新玩家[6];
for(int i=0;i
p
现在是:数组是容器。在对象
s的情况下,它们保存引用。您可以将代码与
class PlayerContainerWith3Elements {
public Player element0; // default initialized with null
public Player element1;
public Player element2;
}
PlayerContainerWith3Elements p = new PlayerContainerWith3Elements();
p.element0.helloNullPointer();
不为每种长度和类型创建一个类,而是通过newplayer[3]
创建一个容器,这样做更方便。但与手动容器一样,您必须分别为所有元素设置引用。通过初始值设定项语法在小数组中:
Player[] p = new Player[]{ new Player(), new Player(), new Player()};
// => makes a new Player[3] and puts the three objects in the 3 slots.
有大一点的环吗
Player[] p = new Player[3];
for (int i = 0; i < p.length; i++)
p[i] = new Player();
Player[] p = Stream.generate(Player::new).limit(3).toArray(Player[]::new);