본문 바로가기

Programming/Java

[Java] main 메소드

반응형
Java 실행 프로그램은 반드시 class 블록과 main() 메소드 블록으로 구성되어야 한다.
메소드 블록은 단독으로 작성될 수 없고 항상 클래스 블록 내부에 작성되어야 한다.

 

다음은 "Hello World" 문자열을 출력하는 코드이다.

public class Hello{
	public static void main(String[] args){
    
    	System.out.println("Hello World");
        
    }
}
class 이름은 개발자가 마음대로 정할 수 있다.
하지만 main() 메소드는 java에서 JVM(Java Virtual Machine)을 구동시키면 가장 먼저 찾아서 실행시키는 entry point역할을 하는 메소드이기 때문에 이름을 마음대로 바꾸면 안 된다.

 

main() 메소드의 구문은 언제나 동일하다.

public static void main(String[] args)
유일하게 바꿀 수 있는 것이 있다면
- 메소드의 변숫값으로 설정된 String 배열의 이름.(args -> stringArgs)
- String배열 선언 방식.(String args []도 가능)

 

메소드에 사용된 코드를 하나씩 뜯어보자.

 

public

  • 메소드의 접근 제어자(access modifier)이다.
  • main() 메소드의 접근 제어자는 반드시 public 이어야 한다. 그래야만 자바 런타임이 이 메소드를 실행시킬 수 있다.
  • public은 '어디에서나'라는 의미로 해석된다. 따라서 JVM은 main() 메소드의 위치에 구애받지 않고 접근 가능하다.

 

만약 아래와 같이 접근 제어자를 사용하지 않고 main() 메소드를 정의했다면 에러가 발생한다.

public class Hello{
	static void main(String[] args){
    
    	System.out.println("Hello World");
        
    }
}
$ javac Hello.java 
$ java Hello
Error: Main method not found in class Hello, please define the main method as:
   public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application
$

 

static

자바에서는 static(정적) 선언을 해주면 프로그램 실행 시 객체를 생성해주지 않아도 자동으로 메모리에 로드된다. main() 메소드의 경우 객체 생성 없이 실행되어야 하기 때문에 static을 붙여줘야 한다.

main() 메소드가 실행되기 위해서는 프로그램 시작 전 메모리에 미리 로드되어 있어야 한다. static 선언을 해주면 프로그램 시작 전 static 선언된 것들을 1순위로 메모리에 올려서 프로그램을 실행시킨다. 프로그램 실행 후 메모리 내에서 main이라는 이름의 메소드를 찾아서 호출한다.

 

void

자바에서 모든 메소드는 리턴 타입을 설정하도록 되어있다.main() 메소드는 아무것도 리턴하지 않는다. 그래서 리턴 타입이 void이다.

 

String[] args

자바의 main() 메소드는 String 배열 타입의 매개변수를 갖는다. 
말 그대로 String 타입의 배열을 매개변수로 가진다는 말인데, 구글링 결과 프로그램 실행 시 외부 값을 가져와서 사용하기 위해 메모리에 저장 공간을 미리 선언해 두는 것이라고 한다.
관련 내용에 대해서 좀 더 자세히 찾아봐야겠다.

 


참고

http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788968481475&orderClick=LAG&Kc= 

 

이것이 자바다 - 교보문고

신용권의 Java 프로그래밍 정복 | 15년 이상 자바 언어를 교육해온 자바 전문강사의 노하우를 아낌 없이 담아낸 자바 입문서. 저자 직강의 인터넷 강의와 Q/A를 위한 커뮤니티(네이커 카페)까지 무

www.kyobobook.co.kr

https://programmingfbf7290.tistory.com/entry/%EC%99%9C-main%EB%A9%94%EC%86%8C%EB%93%9C%EB%8A%94-static%EC%9D%B8%EA%B0%80

 

왜 main()메소드는 static인가?

우리는 습관적으로 main() 메서드를 static으로 선언하고 이를 프로그램의 시작점(Entry Point)로 삼고 있다. 왜 우리는 main() 메서드를 static으로 선언해야 할까? static 으로 선언한 함수나 변수는 자바

programmingfbf7290.tistory.com

https://blog.naver.com/crazydeicide/130114957734

 

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

처음 Java 공부를 시작 할 때 늘, 언제나, 항상, 무조건, 이 문장을 집어 넣어야 한다기에 무작정 따라 외...

blog.naver.com

반응형