1

おそらく初心者の質問ですが、なぜこのコードはnullを出力するのですか?

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

コンストラクターではなくメソッドを定義したためです。

于 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 に答える
0

コンストラクターには、Javaでは常に戻り型がありません。

于 2012-11-02T03:57:38.073 に答える