知らなかったことを話す
1482 ワード
1.次のコードは合法的ですか?
出力結果:
Exception in thread "main"java.lang.StackOverflowError
at com.wjy.enumstudy.Complex.(Complex.java:8)
at com.wjy.enumstudy.Complex.(Complex.java:8)
at com.wjy.enumstudy.Complex.(Complex.java:8)
at com.wjy.enumstudy.Complex.(Complex.java:8)
at com.wjy.enumstudy.Complex.(Complex.java:8)
原因:無限の再帰が現れた.インスタンスinstance初期化操作は、コンストラクタのプログラムボディよりも先に実行されます.
2.次のコードを見てください.
実行結果:
2
1
3.最後にこれを見ます.
出力結果:
2
public class Complex{
private Complex instance=new Complex(2);
public Complex(int i){
System.out.println(i);
}
public static void main(String args[]){
Complex complex=new Complex(1);
}
}
出力結果:
Exception in thread "main"java.lang.StackOverflowError
at com.wjy.enumstudy.Complex.
at com.wjy.enumstudy.Complex.
at com.wjy.enumstudy.Complex.
at com.wjy.enumstudy.Complex.
at com.wjy.enumstudy.Complex.
原因:無限の再帰が現れた.インスタンスinstance初期化操作は、コンストラクタのプログラムボディよりも先に実行されます.
2.次のコードを見てください.
public class Complex{
private static Complex instance=new Complex(2);
public Complex(int i){
System.out.println(i);
}
public static void main(String args[]){
Complex complex=new Complex(1);
}
}
実行結果:
2
1
3.最後にこれを見ます.
public class Complex{
private static Complex instance=new Complex(2);
public Complex(int i){
System.out.println(i);
}
public static void main(String args[]){
//Complex complex=new Complex(1);
}
}
出力結果:
2