このコードを見ることができます
public class Demo1 {
static int i=1;
public static void main(String[] args) {
System.out.println("love"+new Demo1());
Demo1 a=new Demo1();
a.i++;
System.out.println("me"+a.i);
}
public String toString(){
System.out.print("I ");
return "java";
}
}
出力結果
読んだ後、出力がJavaを愛している理由について質問がありますか
。まず、System.out.printlnで愛した後の新しいDemo1を見てみましょう。ここでSystem.outでそれを伝えたいと思います。 .printlnの新しいオブジェクトは、最初にこのオブジェクトのtoStringメソッドを実行します。このメソッドがオーバーライドされると、オーバーライドされたメソッドが実行されますが、急がれることはなく、returnパラメーターは前のprintの後に返されます。したがって、最初にtoStringのメソッドを実行してIを出力し、次にloveを出力します。loveが出力されたら、toStringのjavaをSystem.out.printlnに返して出力します。
新しいDemo1でiを呼び出しましょう。iは静的変数であるため、ロード時に最初にロードされ、自己加算後に2を返します。