[자바/JAVA] public static void main(String[] args)의 의미

main 메서드는 자바(Java)로 구현된 프로그램이 시작될 때 가장 먼저 실행되는 메서드다.

public static void main(String[] args){ }

메서드라는 개념이 그리 쉬운 내용이 아님에도 자바에 입문한 초보자가 "Hello World"를 출력하기 위해 가장 먼저 마주치는 코드이기도 하다. 코드에 담긴 의미를 모르고 사용하지만 초보자도 메서드 문법을 공부하다보면 메인 메서드의 의미를 알게된다.

 

왜 이름이 메인 메서드일까. 메서드란 기능을 수행하는 함수들의 모음이다. 메서드명() 방식으로 표현한다. 때문에 main(String[] args)은 main이라는 이름의 메서드, 메인 메서드로 불리는 것이다.

 

맨 앞에서부터 보면

public은 접근제어자를 의미한다. 접근 제어자란 변수, 메서드, 클래스 등에 대한 접근을 제한하는 일종의 등급이다.

public > protected > default > private 등이 있는데, public은 접근에 제한이 없다. private으로 갈수록 접근에 제한이 커진다. 메인 함수는 다른 클래스를 호출하는 방식으로 활용되기 때문에 접근에 제한이 있어선 안된다. 그래서 접근제어자로 public을 사용한다.

 

static은 모든 객체가 공유하는 변수, 메서드라는 점이 중요하다. static으로 선언한 메서드나 변수는 객체 생성 없이도 메모리에 할당돼 호출 가능한 형태로 존재한다. 그러나 static 타입이 아닌 일반 변수나 메서드는 new 키워드를 이용해서 객체를 생성해야 해당 메서드를 호출할 수 있다. 메인 메서드는 프로그램이 시작되고 가장 먼저 실행된다. 객체를 생성하지 않아도 작업을 수행해야 하기 때문에 메인 메서드는 static이어야 한다.

 

void는 반환 값(return)이 필요하지 않은 메서드를 선언할 때 사용된다. 가령, 반환 값이 필요하지 않은 메서드 A는 void A()로 선언된다. 반환 값이 필요한 경우 void 대신 반환 값의 데이터 타입을 표기한다. Ex) int A() doulbe A()메인 메서드는 짜여진 코드를 처음부터 끝까지 모두 수행하고 종료되기 때문에 따로 값을 반환해줄 필요가 없다.

 

main(String[] args)를 보면 알 수 있듯 메인은 String 타입의 배열로 구성된 메서드다. args는 매개변수(Argument)의 이름이다. 즉 args라는 이름은 임의로 바꿔도 문제가 없다. 암묵적으로 args로 쓰고 있는 것이다.


만약 이클립스에서 메인 메서드에 아무런 값을 주지 않고 출력하면 어떻게 될까.

public class TestEx {
	public static void main(String[] args) {
		
		for(String s : args) {
			System.out.println(s);
		}
	}
}

아무것도 출력하지 않는다. args에 값이 없기 때문이다.

이제 args에 값을 넣고 출력해본다.

 

이클립스
run configuration을 클릭한다.

화면 우클릭 >> Run As >> Run Configurations

이클립스 run configurations
텍스트를 입력하고 run 한다.

Arguments에서 program test라는 데이터 입력 >> Run

이클립스 콘솔 출력
정상 출력된다.

값이 출력된다.

반응형

댓글

Designed by JB FACTORY