Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- GraphQL
- java
- springframework
- #고클린
- #크랙미2번
- #abex
- #크랙미 10번
- #심플즈
- java8
- leetcode
- #심플즈 크랙미
- #abex크랙미4번
- #크랙미
- Spring
- #파밍
- 리버싱
- #크랙미4번
- #보안이슈
- #크랙미 5번
- #보안뉴스
- #크랙미3번
- Easy
- #크랙미 9번
- #abex크랙미
- #리버싱
Archives
- Today
- Total
Halo World
main에 public static을 붙이는 이유? String args[]? void? 본문
자바에서 main 메소드를 작성할 때
public static void main(String args[])
라고 무의식적으로 작성하고는 합니다.
이때 static은 왜 써주는 것일까요? 안써주면 안될까요..?!!!
static을 메소드에 붙이면 정적 메소드가 되고, 변수에 붙이면 정적 변수가 됩니다.
이렇게 '정적'으로 선언을 하게 되면 객체를 생성해주지 않아도 프로그램 실행시 자동으로 메모리에 적재됩니다.
main 메소드 같은 경우는 객체를 생성하지 않아도 자동으로 실행되어 작업을 수행해야하는 부분이기 때문에 static으로 선언하는 것 입니다.
이와 비슷하게 public 접근 제어자는 JVM이 main 함수가 어디에 있건 접근 가능해야하기 때문에 사용합니다.
그리고 또 하나 궁금한 부분!
String args[]는 왜 써주는 걸까요..?
(String args[]) 는 매개변수로 문자열 배열을 줄 수 있다는 것을 의미합니다.
이는 자바를 커맨드라인에서 실행할 때 매개변수를 지원해주기 위해 기본으로 사용해주는 것입니다.
이 때문에 커맨드 라인에서
java test.class 뒤에 문자열을 적어서
java test.class HelloWorld 라고 실행할 수도 있는 것이지요!
마지막으로 main 메소드를 void 형으로 선언하는 이유는,
main 메소드가 끝나면 어차피 프로그램이 종료되는 것인데
그 시점에서 return 값이 있어도 의미가 없고, 있을 필요도 없기 때문입니다.
'개발 지식 > JAVA' 카테고리의 다른 글
Java Stack 영역과 Heap 영역 (0) | 2021.01.02 |
---|---|
자바 Stack 예제 (0) | 2017.06.06 |
접근 제한자 (0) | 2017.06.03 |
싱글톤(Singleton) (0) | 2017.06.03 |
객체 지향 프로그래밍의 특징(캡슐화, 상속, 다형성) (0) | 2017.06.02 |