1

可能是一个菜鸟问题,但为什么这段代码打印为空?

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);
    }
}
4

5 回答 5

3

您在void这里有关键字,使您的“构造函数”成为一个方法(从不调用),因此String s永远不会初始化。null默认情况下,类级别的对象引用。

public void Bug1() {

修复,更改为:

public Bug1() {

构造函数没有返回类型。

于 2012-11-02T00:08:06.310 回答
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 定义为方法而不是构造函数。

于 2012-11-02T00:09:29.280 回答
0

java中的构造函数一直没有返回类型。

于 2012-11-02T03:57:38.073 回答
0

因为你定义了一个方法而不是一个构造函数。

于 2012-11-02T00:08:37.440 回答
0

阅读Java 中的构造函数

这是你应该做的:

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);
    }
}
于 2012-11-02T00:09:51.417 回答