본문 바로가기
tech documents/java

클래스 내에 정의된 main 메서드

by kimtahen 2020. 7. 29.
반응형

1.

자바를 처음 공부하기 시작했다. 시작하고 가장 먼저 마주 한 것은 바로 class 내에 main method가 존재한다는 점이었다. 객체지향이라 그런지, Java 프로그램의 시작점도 class 내에 속해 있는 듯하다. 그러다 궁금해 졌는데, main 메서드 내에서 main 메서드가 속한 클래스의 인스턴트를 만들어서 main method를 실행시키면 어떨지에 관한 것이다. 아래와 같이 코드를 작성하여 실행해보았다.

public class Working {
    public static void main(String[] args) {
        System.out.println("This is main method");
        Working w =new Working();
        w.main(new String[4]);
    }
}

 

2.

실행해보니, 예상대로 무한 루프가 펼쳐진다.

이렇게 수십만 줄이 출력되다가, 아래의 오류를 낸 뒤 프로그램의 예외가 발생한다.

예외 문을 읽어보니, StackOverflow 가 main thread에서 발생하는 듯 하다. 정확한 이유는 모르겠지만, 메모리를 할당하며 무한 루프가 발생하여 생기는 예외인 것 같다. 이러한 현상은 main 메서드에서만 나타나는 것일까?

 

3.

이렇게 코드를 작성하여 실행해보았다.

class ExClass{
    public static void exmethod(){
        System.out.println("This is exmethod");
        ExClass ex = new ExClass();
        ex.exmethod();

    }
}

public class Working {
    public static void main(String[] args) {
        System.out.println("This is main method");
        ExClass ex = new ExClass();
        ex.exmethod();
    }
}

위에서 실행했던 결과와 같이 무한루프를 돌다가 stackoverflow 예외가 발생하고 작동을 멈춘다.

결론적으로 되게 평등한 것 같다.

 

반응형

'tech documents > java' 카테고리의 다른 글

Cloneable interface  (0) 2020.07.31

댓글