2017-12-24 9 views
-7
class A{ 
    public A(int i) { 
     System.out.println(1); 
    } 
    public A() { 
     this(10); 
     System.out.println(2); 
    } 
    void A() { 
     A(10); 
     System.out.println(3); 
    } 
    void A(int i) { 
     System.out.println(4); 
    } 
} 

public class MainClass{ 
    public static void main(String[] args) { 
     new A().A(); 
    } 
} 

私はこのコードの出力を理解していません。私は初心者であり、なぜこれが起こっているのか、実行トラックか、またはこのコードが実行されるとどうなるかを知りたいのですか?私はこのアプリケーションの出力が何であるか知る必要があります:1243

+0

理解していない部分を説明するためには、その部分を教えてください。 「なぜこれが起こっているのか本当に知りたがっている」と言いましたが、これはあなたに言及していますか? – azurefrog

+0

なぜ4が3より前に出力されるのですか – UrimHashani

+0

メソッドコールの前にcontrcutionが発生します。そのため、基本コンストラクタが呼び出され、intコンストラクタが呼び出されます。したがって、1の前に1を返します。次に、intでメソッドoverloadを呼び出すA outputs 3. int overload print 4.デバッガとブレークポイントを使って、これを入力するのにかかる時間が短くて済みました。 –

答えて

2
  1. 空のコンストラクタを使用してAクラスの新しいインスタンスを作成します。 new A()
  2. 空のコンストラクタでは、最初の呼び出しは値this(10)のコンストラクタです。
  3. int int値のコンストラクタで、 ""と表示されます。 System.out.println(1)
  4. 次に、空のコンストラクタに戻り、 ""を呼び出します。 System.out.println(2)
  5. 次に、パラメータがないメソッドを呼び出します。 .A()
  6. そして、パラメータを使ってメソッドを呼び出します。 A(10)
  7. ""と表示されます。 System.out.println(4)
  8. 最後の操作として「」と表示されます。 System.out.println(3)

https://i.imgur.com/i5l8kTA.png

私の英語のため申し訳ありません。

関連する問題