Player类实例打印显示null 0 null,成员变量未正确赋值问题咨询
问题分析:Player类成员变量未正确初始化的原因
你遇到的问题核心是构造函数的赋值顺序完全搞反了。
看你的Player类构造函数代码:
public Player (Hand hand, int chips, String name) { hand = this.hand; chips = this.chips; name = this.name; }
这里的逻辑是把类的成员变量(this.hand/this.chips/this.name)的默认值,赋给了构造函数的参数,而非将传入的参数值保存到类的成员变量里。由于成员变量的默认初始值:引用类型(Hand、String)为null,int类型为0,所以最终类的成员变量始终保持默认状态,打印时就输出了null 0 null。
正确的构造函数写法应该颠倒赋值顺序,用传入的参数给类的成员变量赋值:
public Player (Hand hand, int chips, String name) { this.hand = hand; this.chips = chips; this.name = name; }
这里的this关键字明确指代类的成员变量,避免和构造函数的参数名混淆,能把创建实例时传入的hand、5000、"Player_1"正确保存到类的成员变量中。
内容的提问来源于stack exchange,提问作者Derrick Perry
相关产品推荐
相关产品推荐

