📝느낀 점
당연히 자바는 main() 메서드를 작성해야 동작한다는 룰이 있는 거겠지 하며, "그런가 보다" 하고 넘기기만 했다.
하지만 이런 생각은 개발자로서 위험하겠다는 생각을 하였고, 다시 자바에 대해 하나하나 찾아보고 기록을 남기려고 한다. main() 메서드를 작성 함으로써 자바 프로그램의 진입점을 알려주는 것과 같은 것이다. 그리고 String [] args는 프로그램
실행 시 JVM이 String 배열을 생성하여 매개변수로 전달한다는 사실도 알게 되었다.
왜, 실행을 위해서 main 메서드가 필요한 것인가요?
이유는 프로그램이 실행되는데에 있어서 자바 프로그램의
진입점은 main() 메소드이기 때문에 반드시 있어야 한다는 것입니다.
즉, 자바는 main 메서드를 프로그램 실행의 시작 기점으로 삼기 때문에 main 메서드가 필요한 것입니다.
public static void main(String[] args) {
}
문자열 배열을 매개 변수로 선언한 이유는 뭘까?
문자열 배열을 매개변수로 주지 않으면 아래와 같은 에러가 발생한다.
- 매개변수를 사용하지도 않을 것인데, 왜 문자열 배열을 매개변수로 할당해줘야 하는 것일까?
class Main {
public static void main() { // 매개변수 제거
System.out.println("Hello")
}
}
이유는
프로그램을 실행하면 JVM은 길이가 0인 String 배열을 먼저 생성하고
main() 메서드를 호출할 때 매개값으로 전달한다고 한다.
main()메서드를 호출할 때 문자열 배열이 할당되어야 하는 것인데
클래스의 메서드 선언시 매개변수를 주지 않아 버리니 에러가 발생하는 것이다.
자바는 설계시에 문자열 배열을 생성하고 매개값으로 전달되도록 설계했을까?
매개변수는 왜 정수, 실수 배열들이 아닌 문자열 배열일까?
프로그램이 실행되기 위해서는 cmd로 명령어를 실행하기에, 명령어들은 모두 문자열이기 때문이다.
그렇기에 문자열인 배열로 할당받아야 되는 것이다.
Reference
'Java' 카테고리의 다른 글
인터페이스는 상수 필드만 선언이 가능한 이유는? (0) | 2023.11.06 |
---|---|
왜 모든 클래스는 Object 클래스의 상속을 받을까? (0) | 2023.11.06 |
System.out.println() 내부 동작원리 (0) | 2023.11.06 |
책임, 위임, 협력 (0) | 2022.12.13 |
자바 네이밍 규칙 (0) | 2022.12.13 |