运行Java程序时控制台输出null,求排查Student类代码问题
问题排查:Java控制台输出null的原因
嘿,我一眼就发现问题所在了!你的构造函数赋值顺序完全搞反了,这直接导致类的成员变量没有被正确初始化,所以才会输出null(String类型默认值)和0(int类型默认值)。
错误原因分析
在你的构造函数里,你写的是:
public Student(String studentName,int studentAge){ studentName = name; studentAge = age; }
这行代码的逻辑是把类的成员变量name(此时是默认值null)赋值给参数studentName,把成员变量age(默认值0)赋值给参数studentAge——完全搞反了赋值方向!你传入的"ragaey"和22根本没被存到对象的属性里。
修正后的构造函数
把赋值顺序反过来,将参数的值赋给类的成员变量:
public Student(String studentName,int studentAge){ name = studentName; age = studentAge; }
或者更规范一点,用this关键字明确区分成员变量和参数(尤其当参数名和成员变量名相同时,这是Java的最佳实践):
public Student(String studentName,int studentAge){ this.name = studentName; this.age = studentAge; }
修正后的效果
当你重新运行代码,student1.printInfo()就会正确输出:
ragaey 22
内容的提问来源于stack exchange,提问作者Ragaey M.Ragaa
相关产品推荐
相关产品推荐

