public class ABC {
public static void main(String[] args) {
// static public void main(String[] args) public 과 static 순서 바꿔도 무방
...
System.out.println(...);
}
}
위와 같은 형태로 main() 메소드가 사용된다.
java.exe에 의해 호출될 수 있도록 미리 약속된 부분
main() 메소드 안에서만 System.out.print 을 선언 가능하다!
javac 컴파일러로 ABC.java 컴파일
javac ABC.java -encoding utf-8
ABC.class 파일 생성
ABC.class 파일 실행
java ABC
참고: 캡슐화, 접근 제한자, Getter/Setter, Setter 의 대안
String 객체로 정의된 args 라는 이름의 배열로 파라미터를 받겠다.
→ 즉, 배열 선언
배열 선언하는 방식
String[] args
String args[]
String... args
String 배열을 파라미터로 받는다.
args 는 변수명(파라미터의 이름)
String[] blingbling
String blingbling[]
String... blingbling
따라서, blingbling 처럼 다른 이름으로해도 문제 없다.
String[] args 를 사용하지 않는다면
컴파일은 가능하지만, 엔트리 포인트가 없어 실행할 수 없는 상태가 된다.
없는 경우, 다음과 같은 문제가 발생하게 됨
JVM(런처)의 엔트리 포인트로, 단 1개의 메인 메서드만 허용됨을 알 수 있다.
→ public static void main (String[] args)
→ 따라서, 오버로딩된 다른 형태의 main 함수는 엔트리 포인트로 동작하지 않는다.
public class Main {
// 유일하게 엔트리 포인트로 동작
public static void main (String[] args) {
System.out.println("main 메소드 - String[] args");
}
// main 메소드 오버로딩 → 동작 X
public static void main (Integer num) {
System.out.println("main 메소드 - Integer num");
}
// main 메소드 오버로딩 → 동작 X
public static char main(char c) {
System.out.println("main 메소드 - char c");
return 'c';
}
}
엔트리 포인트 (Entry Point)
- 프로그램이 시작되는 시작점
- c, c++, java 등... : main 함수가 엔트리 포인트로 사용된다.
python, javascript 등... :main 함수가 아닌인터프리터가 코드를 읽기 시작한 부분부터 진행
참고: [JAVA] this 의미와 사용법
참고: 자바 - this와 this( )의 용도 및 사용예제
참고: [Java] 자바 static의 의미와 사용법
참고: 07-03 스태틱(static)
참고: [Java] static이란?
참고: [JAVA] 메인 메소드 public static void main(String[] args) 알아보기
참고: 생성자 대신 정적 팩터리 메서드를 고려하라
참고: [Java] 자바 상수 final의 의미와 사용법