본문 바로가기
Java

public static void main(String[] args)는 무슨 의미일까?

by 오늘이 내가 된다. 2022. 1. 1.

자바를 사용하려면 public static void main(String[] args)를 안 써본 사람은 없을 것이다.

하지만 여태 껏 우리는 이것이 무슨 의미인지 모르고 그저 이 안에서 구문을 작성해야 실행되는 것이라고 알았다.

그렇다면 이게 어떤 의미를 가지는 것 일까?

 


 

public의 의미 (접근제한자의 의미)

public은 간단히 말해 접근제한자 중의 하나이다. 

public이 지니는 특성은 같은 패키지 혹은 다른 패키지 모두 접근(참조)할 수 있다는 점이다.

 

접근제한자의 내용은 다음에서 다룬다.

[BackEnd/Java] - public, protected, default, private 접근제한자

 

 

static의 의미

static은 정적을 나타낸다. '고정된'이라는 의미를 내포하고 있으며,

static 키워드를 사용하여 Static변수와 Static메소드를 만들 수 있다.

이를 정적 필드, 정적 메소드라고 부른다.

 

기존의 객체의 경우 선언 시 stack 또는 heap 메모리에 할당되지만,

static의 경우 선언되기 이전에 프로그램이 실행 시 메모리에 할당되는 것을 의미한다.

그렇기 때문에 객체에 소속된 멤버가 아니고, 클래스의 고정멤버로서 이 둘을 클래스 멤버라고도 부른다.

 

 

void의 의미

void의 경우 메소드의 return 타입이 없을 경우 사용하는 것이다.

메소드는 main문에서 코드를 실행할 때 각 메소드를 호출하여 메소드에서 각각의 기능을 수행하는 역할을 한다.

 

예를들어 내(main)가 신입사원(method)에게 서류를 인쇄하여 가져올 것을 부탁한다.

신입사원(method)의 경우 서류를 인쇄하고(method의 실행) 인쇄된 서류를 나(main)에게 도로 가져온다.(return)

main이 method를 실행하면 method는 자신의 역할을 수행하고 다시 main에게 결과물을 return 해야한다.

이때, return할 결과물이 없을 경우, return타입을 void로 하는 것이다.

 

return 타입이 없는 void의 예

public void employee(int a) {
		System.out.println(a);
	}
	
	public static void main(String[] args) {
		employee(10);
    }

return을 하지 않고 employee 메소드 내에서 출력을 하는 경우가 그러한 예이다.

 

 

 

public static void main(String[] args)의 의미

그렇다면 이제 본론으로 public static void main(String[] args)의 의미가 무엇인지 살펴보도록 하자.

 

 

public: 같은 패키지 및 다른 패키지 모두 접근이 가능한,

코드를 실행하면 메소드와 클래스들을 호출하게 되는데 다른 클래스와 메소드 등에서 main의 접근을 막으면 안됨

 

static: 정적 메모리로 프로그램이 실행 시 메모리에 할당된,

기존의 객체의 경우 할당이 끝나면 메모리에서 사라지는 데 반해 static을 사용하면 프로그램이 종료될 때 까지 유지

 

void: return 타입이 없는,

프로그램의 시작과 끝으로 마무리 하는 데 누군가에게 따로 return을 할 일이 없음

 

main: 디버깅시 Entry Point (제일 먼저 시작하는 코드)

자바에서 모든 코드의 디버깅은 main에서 시작 - 끝을 이루게 된다.

 

String[]: String[] 배열을 나타냄

args: String[] 배열의 변수, 다른 값으로 써도 되지만 통상적으로 args 사용

프로그램의 실행 순간에 외부의 값을 가져와서

프로그램 내 사용하고자 할 때 메모리에 저장할 공간을 미리 선언해 두는 것

댓글