[Java] λ©μΈλ©μλ(public static void main(String[] args)) λ―μ΄λ³΄κΈ°
πμμ½
main λ©μλλ μλ° νλ‘κ·Έλ¨μ μ§μ μ (entry point), μ¦ μμμ μ΄λ€.
JVMμ μλ° νλ‘κ·Έλ¨ μ€νμ main λ©μλλ₯Ό μ°Ύμμ μμνλ―λ‘ main λ©μλλ νμμ μΈ λ©μλμ΄λ€.
- public: μ κ·Όμ μ΄μλ‘, JVMμ΄ main λ©μλλ₯Ό μ κ·Όν μ, μ°Ύμ μ μλ€.
- static: μΈμ€ν΄μ€ μμ± μμ΄ ν΄λμ€κ° λ‘λλλ©΄ λ°λ‘ μ€νλμ΄μΌνκ³ νλ‘κ·Έλ¨ μ€νμ main λ©μλλ λ©λͺ¨λ¦¬μ ν λΉλμ΄ μμ΄μΌνκΈ° λλ¬Έμ κ°λΉμ§ 컬λ ν°μ μ 리 λμμ΄ μλμ¬μΌ νλ€.
- void: main λ©μλκ° μ’ λ£λμλ€λ κ²μ νλ‘κ·Έλ¨μ΄ μ’ λ£λμλ€λ κ²μ μλ―Ένλ―λ‘ λ°νν 리ν΄κ°λ μλ€.
- String[] args: νλ‘κ·Έλ¨ μ€νμ main λ©μλμ λκΈ°λ νλΌλ―Έν°μ΄λ€.
main λ©μλλ?
λ¨Όμ μ΄ main λ©μλκ° λ¬΄μμΈμ§ μμ보μ.
main λ©μλλ Java νλ‘κ·Έλ¨μ μ§μ μ (entry point)λ‘, νλ‘κ·Έλ¨μ΄ μ€νλ λ κ°μ₯ λ¨Όμ νΈμΆλλ€.
κ·Έλ¦¬κ³ λͺ¨λ μλ° μ΄ν리μΌμ΄μ μ main λ©μλλ₯Ό νμλ‘ ν¬ν¨ν΄μΌνλ€.
public class Main {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
π‘ μ§μ μ (entry point)
μ§μ μ μ΄λ νλ‘κ·Έλ¨μ΄ μμλλ μμμ μΌλ‘, main λ©μλκ° μ΄μ ν΄λΉνλ€.
μ»΄ν¨ν°κ° νλ‘κ·Έλ¨μ μ€νν λ κ°μ₯ λ¨Όμ main λ©μλλ₯Ό μ°Ύμμ κ·Έ μμ μλ μ½λλ₯Ό μ€ννλ€.
μ¦, νλ‘κ·Έλ¨μ μμν λ μ»΄ν¨ν°κ° μ΄λμλΆν° μ€νν΄μΌν μ§λ₯Ό μλ €μ£Όλ μν μ νλ κ²μ΄λ€.
λͺ¨λ μλ° νλ‘κ·Έλ¨μ main λ©μλλ₯Ό ν¬ν¨ν΄μΌνλ μ΄μ κ° μ΄μ μλ€. main λ©μλκ° μμΌλ©΄ νλ‘κ·Έλ¨μ΄ μ΄λμ μμν΄μΌν μ§λ₯Ό λͺ°λΌμ μ€νλμ§ μλλ€.
*κ΄λ‘μ μΌλ‘ νλ‘κ·Έλ¨μ μμμ μ mainμΌλ‘ νλ€κ³ νλ€!
main λ©μλκ° μλ° νλ‘κ·Έλ¨μ μ€ννλ €λ©΄ νμμ μΌλ‘ μμ΄μΌνκ³ , κ°μ₯ λ¨Όμ μ€νλλ€λ κ²μ μμ보μμΌλ μ΄μ νλμ© λ―μ΄λ³΄μ!
public
publicμ μ κ·Ό μ μ΄μ(access modifier)μ€ νλλ‘, μ΄λμλ ν΄λΉ κ°μ²΄λ₯Ό μ°Έμ‘°ν μ μλ μ κ·Ό μ μ΄μμ΄λ€.
main λ©μλλ μ§μ μ (entry point)μ΄κΈ° λλ¬Έμ JVMμμ μ΄ main λ©μλλ₯Ό μ΄λκ³³μμλ μ κ·ΌνκΈ° μν΄ public μ΄μ¬μΌνλ€.
JVMμ΄ μλ° νλ‘κ·Έλ¨μ μμνκ³ main λ©μλλ₯Ό μ€ννλ €λ μμ μ μμ§ μλ¬΄λ° ν΄λμ€λ λ‘λλμ΄μμ§ μμ μνμ΄λ€.
κ°μ₯ λ¨Όμ main λ©μλκ° μ΄λ€ ν΄λμ€μ μλμ§λ₯Ό μ°Ύκ³ , κ·Έ ν΄λμ€μμ λΆλ¬μ€λ κ³Όμ μ΄ νμνλ€.
κ·Έλμ μ΄ main λ©μλμ μ κ·Ό μ μ½μ΄ μκΈ΄λ€λ©΄ JVMμ main λ©μλλ₯Ό μ°Ύμ§ λͺ»ν΄μ νλ‘κ·Έλ¨μ μ€νμν¬ μ μλ κ²μ΄λ€.
μ΄λ κ² λλ©΄ μλ° νλ‘κ·Έλ¨ μ€νμ΄ μλλ―λ‘, main λ©μλμλ μλ¬΄λ° μ μ½μ΄ μλλ‘ publicμ μ¨μ£Όμ΄μΌ νλ€.
μ κ·Όμ μ΄μλ‘ public μ΄ μλλΌ privateλ‘ μ€ννλ©΄ μλμ κ°μ μλ¬κ° λ°μνλ€.
μ€λ₯: javafx.application.Application ν΄λμ€μμ κΈ°λ³Έ λ©μλκ° Main3μ΄(κ°) μλλλ€. λ€μ νμμΌλ‘ κΈ°λ³Έ λ©μλλ₯Ό μ μνμμμ€.
public static void main(String[] args)
static
static μ μΈμ€ν΄μ€ μμ±μμ΄ λ©μλλ₯Ό νΈμΆν μ μκ²νλ ν€μλλ‘, μ μ ν¨μμμ μλ―Ένλ€.
staticμΌλ‘ μ μΈν μμ±κ³Ό λ©μλλ μΈμ€ν΄μ€μ κ΄κ³μμ΄ νμ μΌμ ν κ°μ κ°μ§λ―λ‘ κ΅³μ΄ μΈμ€ν΄μ€λ₯Ό μμ±νμ§ μμλ μ¬μ©ν μ μκ²λ λ§λ€μ΄μ§ κ²μ΄λ€.
JVMμ΄ main λ©μλλ₯Ό λ°κ²¬νλ©΄ main λ©μλκ° λ€μ΄μλ ν΄λμ€λ₯Ό λ‘λνλ€.
κ·Έ ν λ³λλ‘ μΈμ€ν΄μ€λ₯Ό μμ±νλ κ³Όμ μ κ±°μΉμ§ μκ³ ν΄λμ€κ° λ‘λλλ©΄ λ°λ‘ main λ©μλλ₯Ό μ¬μ©ν μ μλλ‘ ν΄μΌνκΈ° λλ¬Έμ static ν€μλλ₯Ό λΆμ¬μ£Όμ΄μΌ νλ€.
κ·Έλ¦¬κ³ staticμΌλ‘ μ μΈν μμ±κ³Ό λ©μλλ νλ‘κ·Έλ¨μ΄ μ€νλλ μκ° λ©λͺ¨λ¦¬κ° ν λΉλκ³ , κ°λΉμ§ 컬λ ν°μ λ©λͺ¨λ¦¬ μ 리λμμ΄ μλλ€.
μ¦, staticμΌλ‘ μ μΈν μμ±κ³Ό λ©μλλ λ©λͺ¨λ¦¬μ νμ ν λΉλμ΄ μλ€λ κ²μ΄λ€.
main λ©μλλ κ°λΉμ§ 컬λ ν°μ μν΄ μ 리λμ΄μλ μλλ κΈ°λ³Έ ν¨μμ΄λ―λ‘ staticμ λΆμ¬μΌνλ€.
void
void λ λ©μλμ λ¦¬ν΄ κ°μ΄ μμμ μλ―Ένλ€. μλ°λ λ©μλμ μ€νμ΄ μ’ λ£λλ©΄ λ¦¬ν΄ νμ μ λͺ μν΄μΌνλ μΈμ΄μ΄κΈ° λλ¬Έμ main λ©μλμλ λͺ μλμ΄μμ΄μΌ νλ€.
main λ©μλκ° μ’ λ£λμλ€λ κ²μ νλ‘κ·Έλ¨μ΄ μ’ λ£λμλ€λ κ²μ μλ―Ένλ―λ‘ λ°νν 리ν΄κ°λ μλ€.
κ·Έλ κΈ° λλ¬Έμ voidλ₯Ό λΆμ¬μ€λ€.
String[] args
String[] argsλ 컀맨λ λΌμΈμ argumentλ€λ‘, 컀맨λ λΌμΈμ ν΅ν΄ main λ©μλ λ΄λΆμμ μ¬μ©ν μ μλ String νμ μ λ°μ΄ν°λ₯Ό μ λ¬ν μ μλ€.
*String[]λ String νμ μ μ¬λ¬ κ°μ μ μ₯ν μ μλ μ μ₯ꡬ쑰μ΄λ€.
JVMμ΄ main λ©μλμ λ³μλͺ μ κ°μ νμ§ μκΈ°μ λ³μλͺ μ μμλ‘ λ³κ²½ν΄λ μ λμνλ€.
νμ§λ§ String[] args ꡬ문 μ체λ₯Ό λΉΌλ©΄ μλλ€. μΌλ° λ©μλλ main λ©μλ λ΄λΆμμ νΈμΆνκΈ° λλ¬Έμ μ λ ₯κ°μ main λ©μλμμ μ ν μ μμ§λ§, main λ©μλλ νλ‘κ·Έλ¨ μ€νμ μ²μμΌλ‘ μνλκΈ° λλ¬Έμ μΈλΆλ‘λΆν° κ°μ λ°μ μ μμ΄μΌνκΈ° λλ¬Έμ΄λ€.
μ¦, main λ©μλλ νλ‘κ·Έλ¨ λ΄λΆμμ κ°μ νΈμΆν μ μκΈ° λλ¬Έμ λ¬Έμμ΄ μΈμλ₯Ό λ°μ μ μλλ‘ ν΄μΌνλ€λ κ²μ΄λ€.
νμ§λ§ IntelliJλ Eclipse κ°μ IDEλ‘ Java νλ‘κ·Έλ¨μ ꡬννκ³ μ€ννλ μμ¦μλ main λ©μλμ λ¬Έμμ΄μ μ λ¬ν μΌμ΄ κ±°μ μλ€. μμ κΈ°μ¬νλ―μ΄ μ»€λ§¨λλΌμΈμ μΈμκ°μΌλ‘, Javaκ° DOS νκ²½μμ μ€νλλ λμ μ¬μ©νλ κ²μ΄λ€.
λͺ λ Ή ν둬ννΈ(cmd)λ±μ ν°λ―Έλμ ν΅ν΄μ μλ°λ₯Ό μ€νν λ μΈμκ°μ΄λΌκ³ μκ°νλ©΄ λλ€.
μλ₯Όλ€μ΄ μλμ κ°μ μλ° νμΌμ μ»΄νμΌνκ³ μ€νμ μΈμκ°μ λ£μ΄μ νμΈν΄λ³΄κ² λ€.
package project01;
import java.util.Arrays;
public class Solution01 {
public static void main(String[] args) {
System.out.println(Arrays.toString(args));
}
}
μλμ°μ κ²½μ° λͺ λ Ή ν둬ννΈ(cmd)μμ μ€νν΄λ³΄λ©΄ μλμ κ°μ΄ μΈμκ°μ μ λ°μμ μΆλ ₯ν΄μ€λ€λ κ²μ μ μ μλ€.
ν΄λΉ μλ° νμΌμ΄ μλ λλ ν 리μμ λͺ λ Ήμ΄λ₯Ό μ λ ₯ν΄μ μννλ€.
- java Solution01.java : java νμΌ μ»΄νμΌ
- java project01.Solution01 test string HelloWorld : μ»΄νμΌν μλ° νμΌμ μ€ν
- projext01.Solution01: ν¨ν€μ§λͺ .ν΄λμ€λͺ
- test string HelloWorld κ° main λ©μλμ μΈμκ°μΌλ‘ λ€μ΄κ°λ String[] argsμ ν΄λΉνλ λΆλΆμ΄λ€.
*μ€κ°μ cd .. λ₯Ό νλ μ΄μ λ μμ ν΄λλ‘ μ΄λνκΈ° μν΄μ!
λ¬Όλ‘ IDE μμλ μ€μ μ νλ©΄ main λ©μλμ String λ°°μ΄ μΈμλ₯Ό μ λ¬ν μ μλ€κ³ νλ€.
μ°Έκ³ ν¬μ€ν
Java λ©μΈλ©μλ public static void main(String[] args) μ΄ν΄νκΈ°
public static void main(String[] args) μλ°μ λͺ¨λ νλ‘κ·Έλ¨μ public static void main (String[] args)ν¨μλ‘ μμνλ€. μ΄λ κ² μμνλ κ²μ μλ°μ κ·μΉμ΄λ€. λ€μμ νλ‘κ·Έλλ° μΈμ΄μμ mainν¨μκ° μνΈλ¦¬ ν¬
devparker.tistory.com
[Java] main λ©μλ λ½κ°κΈ°
μλ° μ± μ νΌμ³€λ€. Hello World μμ κ° λμ€λ©΄μ main λ©μλλ μ΄λ κ² μ겨먹μκ±°λ μΌλ¨ λμ΄κ°λλ€. λ΄κ° νΌμΉ μ± μ μλ°λ₯Ό μ²μ λ°°μ°λ μ¬λμ μν΄ μ°μ¬μ‘μ§λ§, λλ μ²μ λ°°μ°λ μ¬λμ΄ μλλ―
velog.io
[Java] public static void main(String[] args)λ λ¬΄μ¨ λ»μΈκ°μ?
μμ½ mainν¨μλ μλ° νλ‘κ·Έλ¨μ μμμ μ΄λ€. μλ°κ°μλ¨Έμ (JVM)μ mainμ΄λΌλ μ΄λ¦μ κ°μ§ λ©μλλ₯Ό μ°Ύμ νλ‘κ·Έλ¨μ μμνλ€. - public : JVMμ΄ mainν¨μλ₯Ό μ°Ύμ μ μλλ‘ νλ€. - static : JVMμ΄ mainν¨
atomicliquors.tistory.com
[κΈ°μ λ©΄μ ] java λ©΄μ μ§λ¬Έ 리μ€νΈ λ΅λ³ ν¬ν¨
μ»΄νμΌκ³Όμ 1-1. compiler vs interpreter μ»΄νμΌμ΄λ κ³ κΈμΈμ΄λ‘ μμ±λ .javaνμΌμ κΈ°κ³μ΄μΈ byte code μ¦, .classνμΌλ‘ λ³ννλ κ³Όμ μ λ§ν©λλ€. μ»΄νμΌ κ³Όμ 첫λ²μ§Έλ‘ νλ‘κ·Έλλ¨Έκ° javaμΈμ΄λ‘ μμ€μ½
velog.io