-
[Java] public static void main(String args[]) 알아보기프로그래밍/Java 2021. 10. 10. 17:27
우리는 프로그래밍을 시작할 때 맨 처음 "Hello, World!"를 출력한다.
public class Test { public static void main(String[] args) { System.out.println("Hello, Java!"); } }
이때 public static void main(String[] args)는 무엇일까?
public static void main(String[] args)를 메인 메서드라고 부른다. 즉 public static void main(String[] args)도 메서드의 일종이다. 앞에 붙은 예약어들이 무엇인지 하나하나 살펴보겠다.
public은 접근제어자이다.
접근제어자로는 public, protected, default, private이 있다. 접근제어자는 클래스, 생성자, 메서드, 변수에 붙을 수 있다. 이번에는 메서드에서의 접근제어자가 작동하는 것만 서술하겠다.public이 붙으면 해당 메서드는 다른 패키지에서도 사용할 수 있다. (제한이 없다)
protected가 붙으면 해당 메서드는 해당 패키지 내부에서만 쓰이되 다른 패키지의 클래스에서 자신을 상속을 했을 때엔 사용할 수 있다.
default가 붙으면 해당 메서드는 해당 패키지 내부에서만 쓰여야 한다.
private가 붙으면 해당 메서드는 해당 클래스 내부에서만 쓰여야 한다.
그렇다면 public은 접근하는데 아무 제한이 필요 없다는 뜻이다.접근제어자에 대한 건 이 포스팅에 써 놓았다.
[Java] 접근제어자 알아보기
접근제어자는 무엇일까? 접근제어자는 외부 클래스에서 클래스, 생성자, 메서드, 변수에 붙어서 접근하는 것을 제한할 때 쓰인다. 어느 곳에 붙는 것에 따라 성격이 다르다. 메서드, 변수에 붙는
ms949.tistory.com
static은 정적 메서드를 말한다.
정적 메서드는 다른 메서드와 다르게 new 연산자를 쓰지 않아도 클래스명. 메서드명()의 형식으로 가져와 쓸 수 있다. 그 이유는 정적 메서드는 컴파일되는 순간 JVM의 static 영역에 올라가고, 객체 생성 없이 어디서든 접근이 가능해지기 때문이다.즉 static이 붙으면 어디서든지 접근이 가능하다.
static에 관한 것은 이 포스팅에 써 놓았다.
[Java] static 알아보기 - 1편
메서드와 필드에 붙는 static은 왜 붙는 것이고 무슨 역할을 할까? 예제를 만들어봤다. public class Marin { public int range = 4; public boolean isUpgrade; } class Academy { void upgradeRange(Marin m) {..
ms949.tistory.com
void는 반환형이다.
반환형에는 기본형, 참조형(클래스), void가 들어갈 수 있다. void는 반환형이 없을 때 넣어준다. 따라서 return을 넣어주지 않는다. (return을 넣어줄 때는 메서드를 종료하겠다는 뜻이다.)실제로 메인메서드에서도 return을 넣어주면 메인메서드가 종료된다.
main(String[] args)에서 main은 메서드 이름이고 (String[] args)는 매개변수이다.public class Test { void parameterArray(int[] array) { for (int i = 0; i < array.length; i++) { System.out.println(i); System.out.println("Array : " + array[i]); } } public static void main(String[] args) { Test test = new Test(); int[] arr = { 1, 2 }; test.parameterArray(arr); } }
0
Array : 1
1
Array : 2매개변수로 배열을 넣을 때에는 값이 가변적으로 들어갈 때 많이 쓰인다. args 매개변수에 값을 넣고 실행하기 위해선
Eclipse 기준더보기Run - Run Configurations의 Arguments 탭에서 공백으로 값을 넣어주면 된다.
인텔리제이 기준
더보기Run/Debug Configurations의 Build and run에서 Run parameter 텍스트 박스에 공백으로 값을 넣어주면 된다
그래서 public static void main(String[] args)은 String배열을 매개변수로 받고, 이름은 main이며 반환형은 없고, 객체 생성 없이 어디서든지, 접근에 제한도 없는 메서드이다...
그래서 메인 메서드를 써야 하는 이유는 무엇인가? 그것은 엔트리 포인트로 메인 메서드를 쓰기 때문이다. 엔트리 포인트는 프로그램의 시작점을 뜻한다. Java에서 엔트리 포인트로 쓰이는 조건은 5가지이다.
1. 접근제어자가 public일 것
2. 정적 메서드일 것
3. 반환형은 void일 것
4. 메서드 이름은 main일 것(무조건 소문자)
5. 매개변수는 String 배열일 것(변수 이름은 상관없다)
public static void main(String ... parameter), public static void main(String parameter[])이어도 상관이 없다.
심지어는 public final synchronized strictfp static void main(String[] args) throws Exception 온갖 예약어를 갖다 붙여도 문제가 없다.
추상 클래스, 인터페이스, enum에서도 메인 메서드는 작동한다.interface Test { void method(); public static void main(String[] args) { System.out.println("Hello, world!"); } }
[JAVA] 메인 메소드 public static void main(String[] args) 알아보기
메인 메소드 public static void main(String[] args) 에 대해 알아봅시다.
velog.io
https://siyoon210.tistory.com/124
자바(JVM)의 메모리 사용 방식 (T 메모리 구조)
자바(JVM)의 메모리 사용 방식 프로그램을 실행시킬 때 CPU와 조화로운(?) 작업을 위해서 저장장치에 있던 내용들이 메모리에 올리가기 시작합니다. 메모리에 데이터들이 어떤 방식으로 올라가
siyoon210.tistory.com
'프로그래밍 > Java' 카테고리의 다른 글
[Java] static 알아보기 (0) 2021.10.13 [Java] 접근제어자 알아보기 (0) 2021.10.11