관련 이론 및 문법

(main 메소드의 매개변수 참고)

http://kkikkodev.tistory.com/114


문제 의도

주어진 소스코드를 가지고, 커맨드라인에서 다음과 같은 명령어를 실행했을 때의 결과를 고르는 문제입니다.


javac Pass2.java

java Pass2 5


답안

B


풀이 방법

이 문제는 Exam A 의 49 번 문제와 거의 비슷합니다.


(Exam B / 49 번 문제 풀이 참고)

http://kkikkodev.tistory.com/116


차이점은, 1 번 라인에서 Pass2 클래스명으로 바뀐 점, 그리고 2 번 라인의 main 메소드에 static 이 빠진 점입니다. main 메소드는 JVM 이 자동으로 main 메소드를 찾아서 호출해야 하는데, (new 로 객체 생성하기 전에 가정 먼저 호출) static 을 쓰지 않으면, 메모리에 자동으로 올라가지 않으므로, main 메소드를 호출할 수가 없게 됩니다.


따라서, 커맨드 라인의 두 명령어에 대해서 알아보겠습니다. 먼저, javac Pass2.java 명령문을 통해 Pass2 클래스를 컴파일합니다. 그러면, Pass2.class 파일이 생성되고, 이를 실행하면서 매개변수로 5 를 넘깁니다. (java Pass2 5 명령어를 통해서) 그러면 JVM 이 메모리에서 main 메소드를 찾아서 호출해야 하는데, static 이 아니기 때문에 main 메소드가 메모리에 없고, 찾지 못해서, Exception 이 발생하게 됩니다.


결과적으로, B 가 답안이 됩니다.


by kkikkodev 2015. 9. 3. 23:30