可能是一个菜鸟问题,但为什么这段代码打印出来?
public class Bug1 {
private String s;
public void Bug1() {
s = "hello";
}
public String toString() {
return s;
}
public static void main(String[] args) {
Bug1 x = new Bug1();
System.out.println(x);
}
}
答案 0 :(得分:3)
此处有void
个关键字,使您的'构造函数'成为一个方法(永远不会被调用),因此永远不会初始化String
s
。类级别的对象引用默认为null
。
public void Bug1() {
要修复,请更改为:
public Bug1() {
构造函数没有返回类型。
答案 1 :(得分:1)
public class Bug1 {
private String s;
public Bug1() {
s = "hello";
}
public String toString() {
return s;
}
public static void main(String[] args) {
Bug1 x = new Bug1();
System.out.println(x);
}
}
您将Bug1定义为方法而不是构造函数。
答案 2 :(得分:0)
因为你已经定义了一个方法而不是一个构造函数。
答案 3 :(得分:0)
这是你应该做的:
public class Bug1 {
private String s;
public Bug1() { //Parameterless constructor
s = "hello";
}
public String toString() {
return s;
}
public static void main(String[] args) {
Bug1 x = new Bug1();
System.out.println(x);
}
}
答案 4 :(得分:0)
构造函数在java中一直没有返回类型。