Java构造函数疑问:为何实例输出x值为0而非51?
问题分析与解决
嘿,我来帮你揪出问题啦!你代码里的输出是0而非51,核心原因是你写的不是构造函数,而是一个普通方法~
构造函数的两个关键规则你没满足:
- 构造函数不能有返回值类型(哪怕是
void也不行!) - 构造函数的名字必须和类名完全一致(包括大小写,你的类是
ListD,但方法写的是listD,小写的l和类名的大写L不匹配)
所以当你用new ListD()创建对象时,Java会调用默认的无参构造函数(你没显式写的话,JVM自动生成),这个默认构造函数不会给x赋值,而int类型的成员变量默认值就是0,所以输出是0。
修正后的代码:
//Create a MyClass class public class ListD { int x; // Create a class attribute // 修正后的构造函数:去掉void,名字和类名一致 public ListD() { x = 51; // Set the initial value for the class attribute x } public static void main(String[] args) { ListD myObj = new ListD(); /* Create an object of class MyClass (This will call the constructor)*/ System.out.println(myObj.x); // 现在会输出51啦! } }
你可以试试这段代码,现在创建对象时会调用你写的构造函数,把x赋值为51,输出就正确啦~
内容的提问来源于stack exchange,提问作者user12824107
相关产品推荐
相关产品推荐

