Notice
Recent Posts
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
관리 메뉴

YUNA's Programming

메인 메소드 : public static void main(String[] args) 본문

Programming/JAVA

메인 메소드 : public static void main(String[] args)

l_yuna 2023. 3. 18. 23:40

 

 

 

 

What is 메인 메소드 : public static void main(String[] args) ?

 

; The main method controls what we want to run


 

 

이미지 출처: https://www.scientecheasy.com/2020/06/main-method-in-java.html/https://www.scientecheasy.com/2020/06/main-method-in-java.html/

 

 

 

 

public 은 접근제한자

접근제한자(Access Modifier)란?

 

; 자바는 객체지향언어로 캡슐화라는 특징이 있는데,

자바의 캡슐화는 클래스 안에 관련된 내용을 모아서 캡슐처럼 보호하고

원하는 정보만큼만 외부에 오픈하여 사용할 수 있도록 하는 것이 핵심이다.

 

;그 접근 범위를 지정할 수 있는 것이 접근제한자(Access Modifier)이다.

 

 


 

접근제한자의 종류

 

; Public : 모든 곳에서 접근 가능

 

; Protected : 같은 패키지 내에서만 접근이 가능.

**단, 다른 패키지라도 상속을 받은 경우 접근 가능 (자식 패키지까지)

 

; Default : 아무것도 적지 않은 경우로, 같은 패키지 내에서만 접근이 가능

 

; Private : 해당 클래스에서만 접근 가능

 

**main 메소드의 접근제한자가 public이 아니면 main 메소드에 접근하지 못하는 클래스가 있을 수 있기 때문에

public 으로 선언이 되어야 합니다.

 

 

 

 


 

 

 

static은 메모리의 영역의 한 종류

메모리의 영역이란?

 

; 프로그램 구동에 필요한 메모리 공간은 한정되어있으므로,

효율적으로 관리해야 프로그램이 원활하게 실행 됨

 

; 자바의 변수와 함수를 메모리에 할당 하는 방법에는  Static, Stack 그리고 Heap이 있음

 


 

메모리 영역의 종류

 

; Static area (스태틱 메모리 영역)

- 데이터가 프로그램의 실행부터 종료까지 메모리에 남아있음 / GC의 정리 대상이 아님

 

; Stack area (스택 메모리 영역)

- 메소드가 호출될 때 메모리에 할당되고, 종료되면 메모리가 해제됨

**LIFO(Last In First Out)의 구조를 갖고, 변수에 새로운 데이터가 할당되면 이전 데이터는 지워짐

 

; Heap area (힙 메모리 영역)

- 저장된 데이터가 더 이상 사용이 불필요하면,

메모리 관리를 위해 JVM(자바 가상머신)에 의해 알아서 해제 ~ GC의 정리 대상임

 

**기본 함수인 main 메소드가 static이 아닌 다른 영역에 선언되면, 메모리에서 정리되어 에러 발생함

**따라서 static으로 선언해, 메모리에 항상 상주하도록 함

 

 

 


 

 

 

void는 retrun type

 

; java의 메소드는

String, int, boolean 등 return을 사용하는 메소드와

void를 사용해 return이 없는 메소드로 나뉨

 

; void 타입을 사용하지 않을 경우 반드시 retrun 값을 반환

 

; 일반 함수는 void를 사용해도 되고, retrun타입을 사용해도 됨

 

**단, 메인 메소드는 함수가 종료되거나 비정상적으로 죽으면 프로그램 자체가 종료되기 때문에,

return 값의 의미를 지닐 수가 없으므로, 메인 메소드는 void 사용이 필수

 

 

 


 

main은 함수명

 

 


 

 

 

 

String[] args는

문자열을 배열로 사용하겠다라는 의미

 

; args는 변수명으로 꼭 arg가 아니어도 상관없으나, String[] args 자체를 없앨 수는 없음

 

**Why?

main 함수 내부에서 호출해서 그 안에서 입력값을 정할 수 있는 일반 함수와는 다르게,

main 함수는 프로그램 실행 시 처음으로 수행되기 때문에, 프로그램 내부에서 값을 호출할 수가 없어,

항상 문자열 인자를 받게 됨 (외부로부터 값을 입력 받음)

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'Programming > JAVA' 카테고리의 다른 글

리터럴(Literal)  (0) 2023.03.19
변수(Variable)  (0) 2023.03.19
JAVA의 작성, 컴파일 그리고 실행  (0) 2023.03.18
내가 쓰려고 만든 IntelliJ 단축키 목록 (추가 예정)  (0) 2023.03.18
IntelliJ 플러그인  (0) 2023.03.18
Comments