예전에 몰랐던 얘기를 해볼게요.

1502 단어
1.아래 코드를 보시면 합법적입니까?
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.(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.다음 코드를 보면 오류가 발생하지 않습니다.
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

좋은 웹페이지 즐겨찾기