1

以下のコードでは、戻り値の型としてクラス名を持つインスタンス変数を作成しました

class classtype{
    static classtype x;

    public static void main(String...a){
         System.out.println(x);
    }
}

上記のコード出力はnull、戻り値の型としてクラス名を持つこのインスタンス変数が文字列型の値を保持していることを示しますが、初期化しようとすると明らかに

static classtype x="1";

で見つかったタイプの不一致エラーが発生しますjava.Lang.String

誰か説明してくれたらお願いします

4

1 に答える 1

7

エラー 1:

x="1";

それをしてはいけない

Classtype タイプじゃないからString

エラー 2:

印刷null

class Classtype{
         static Classtype x = new Classtype();
         public static void main(String...a){
         System.out.println(x);
         }
       }

System.out.println(x); ここでは、デフォルトで ObjectstoString メソッドが出力されることを確認してください 。

初期化していないため、x現在はnullです。

したがって、印刷println呼び出しprint)メソッドごとに

文字列を出力します。引数が null の場合、文字列 "null" が出力されます。それ以外の場合、文字列の文字はプラットフォームのデフォルトの文字エンコーディングに従ってバイトに変換され、これらのバイトは write(int) メソッドとまったく同じ方法で書き込まれます。

印刷するには、クラスString ovveridetoStringメソッドが必要です。Classtypeまた、Java の命名規則に従います。クラス名は大文字で始まります。

すべてのコードで

public class Classtype {


        static Classtype x = new Classtype();
        public static void main(String...a){
        System.out.println(x);

      }

        @Override
        public String toString() {
        // TODO Auto-generated method stub
        return "This is ClassType toString";
        }

}
于 2013-09-30T07:16:49.680 に答える