JAVA의 main() 메서드
자바 프로그램의 시작지점(Entry point)은 main() 메서드입니다. main() 메서드는 프로그램의 시작점이기 때문에 반드시 main() 메서드를 구현한 public class가 하나는 있어야 합니다. main()메서드는 프로그램의 흐름을 최초로 시작하는 메인 스레드이기도 합니다.

main 메서드의 선언부 규칙은 다음과 같습니다.
public static void main(String[] args) {                                                        
    ..프로그램 시작..
}
cs


그런데 main 메서드가 받는 인자값으로 String 배열을 받고 있습니다. 이 String 배열은 콘솔 명령행을 통해 프로그램이 시작될 때 추가적으로 넘겨받는 값들을 저장하는 배열입니다. 문자열은 숫자와 문자 모두 표현이 가능하니 String 배열을 사용하도록 JVM을 설계한것이 아닌가 싶습니다(정확한 정보는 아님). 프로그램 시작과 동시에 값을 넘겨주어야 하는 프로그램을 작성할 때 유용합니다.



명령행으로 받은 인자값 출력하기
main 메서드에서 받은 인자값은 args 배열을 통해 들어옵니다. 다음은 넘겨준 값이 있다면 값을 하나 하나 출력하는 예제입니다.
public class MainTest { 
     
     public static void main(String[] args) { 
           
           for(int i=0; i < args.length; i++) { 
                System.out.println("args[" + i + "] = " + args[i]);             
           }
           
     }
}
cs


우리가 콘솔을 통해 자바 프로그램을 실행할때는 다음과 같이 실행합니다. (컴파일이 되어 있어야 합니다.) 이 경우에는 아무런 값도 넘겨주지 않았으므로 당연히 아무런 결과도 출력되지 않습니다.
> java MainTest                                                                        
cs


명령행을 통해 넘겨줄 인자가 있는경우는 스페이스바(공백) 단위로 값을 넘겨줄 수 있습니다. 다음과 같이 Hello World를 넘겨주면 각각 배열의 0번 요소와 1번 요소로 값을 넘겨줍니다.
> java MainTest Hello World                                                            
args[0] = Hello
args[1] = World
cs


만약 띄어쓰기를 포함하여 하나의 인자로서 넘겨주고 싶은 경우에는 "" 로 묶어줍니다.
> java MainTest "Hello World"                                                        
args[0] = Hello World
cs


만약 "(쌍따옴표) 그대로 넘겨주고 싶으면 자바 문자열 문법에 맞게 역슬래시로 이스케이프 처리하여 넘겨주면 됩니다.
> java MainTest "Hello \"World\""                                                     
args[0] = Hello "World"
cs



블로그 이미지

도로락

IT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그

댓글을 달아 주세요! 질문 환영합니다!