为什么带字符串的对象打印为null?

时间:2012-11-02 00:06:52

标签: java

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

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

5 个答案:

答案 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)

了解constructors in 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);
    }
}

答案 4 :(得分:0)

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