728x90
반응형
SMALL
자바의 시작은 main문인데 왜 저 public이지? 왜 static이지? 라고 생각했을때
어떠한 말을 꺼낼수가 없었다. 때문에 간단히라도 정리한다.
public static void main(String[] args) |
public
우리가 원하는 코드(.java)를 작성하여 결국 이 코드가 JVM 메모리 상에 한번은 등록되어 컴파일,런타임 과정을 거쳐서 코드에 대한 결과물이 나오게 된다.
JVM 원리를 간단히 참고하자:https://pulpul8282.tistory.com/172?category=823477
즉, 프로그램이 실행되는 시작점이 main() 메서드라고 생각하자
JVM이 클래스를 외부에서 호출할수 있도록 public 이 되었다.
static
메모리 절약을 위해서
그렇다. 어차피 main 을 통해서 프로그래밍이 실행되기로 약속되었기 때문에
매번 main을 호출하여 새로운 메모리 공간을 생성할 필요가 없다.
미리 생성되있고 그 값을 계속 미리 생성하는것이 아닌 미리 생성되있는것을 심지어 공유까지 한다. 얼마나 효율적인가
class Yoon{ public static void main(String[] args){ System.out.println("윤주영"); } } |
이미 Yoon이라는 클래스가 생성되기도 전에 이미 main() 메소드는 JVM 메모리 상에 생성되어있다. |
아래 예제를 확인하면 static에 대해서 좀더 와닿을것이다.
class CallMyName{ static void print() {//static 메소드 System.out.println("난 CallMyName 보다 먼저 태어나 있는 윤주영"); } void print2() { //인스턴스 메소드 System.out.println("난 CallMyName이 태어난 뒤에 태어나는 윤주영"); } } public class Static{ public static void main(String[] args) { CallMyName.print(); //static 메서드는 CallMyName를 생성하지 않고 바로 호출(출력)이 가능하다 CallMyName name = new CallMyName(); //CallMyName 인스턴스 생성->JVM메모리에 등록하는 과정 name.print2(); //CallMyName 클래스를 생성해야지만 호출이 가능한 메소드 } } |
Void
main() 메소드는 아무것도 반환하지 않는다.
main()메소드가 종료 되는 즉시 JAVA 프로그램도 종료되기 때문에 반환하는 것은 아무 의미가 없다.
String[] args
자바의 명령형태를 java.lang.String 클래스 유형의 배열로 넘긴다.
참고:https://www.geeksforgeeks.org/understanding-public-static-void-mainstring-args-in-java/
728x90
반응형
LIST
'Language > 자바' 카테고리의 다른 글
[자바] 21. 동일성(==), 동등성(equals)에 관해서 (0) | 2022.01.04 |
---|---|
[자바] 20. 날짜 이슈 Calender, Date, LocalDate (0) | 2021.12.20 |
[자바]18. JMS 기초 with Message Queue (0) | 2021.12.03 |
[자바]17. Message Queue의 구조 (0) | 2021.12.01 |
[자바]16. Comparable vs Comparator (0) | 2021.11.23 |