YUNA's Programming
메인 메소드 : public static void main(String[] args) 본문
What is 메인 메소드 : public static void main(String[] args) ?
; The main method controls what we want to run
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 |