이전글
Hello World 프로그램 분석
이전글에서 작성했던 Hello World 프로그램을 분석해 보겠습니다.
하 나하나 깊이 들어가면 매우 많은것을 알아야 하므로 필수 규칙들만을 기준으로 설명합니다.
처음에는 궁금증에 도대체 이게 뭘까? 왜? 어째서? 라는 좋은 의문을 품을 수 있으나 너무 연연하기보다는 하나하나 지금 당장 중요한 것부터 알아가는 것이 더욱 빠를 수 있습니다.
이전에 설명했듯 자바는 객체지향 언어이며, 객체는 클래스라는 설계도를 기준으로 만들어집니다.
따라서 모든 자바 소스는 클래스 단위로 작성됩니다.
클래스(class)는 객체의 상태를 나타내는 필드, 객체의 행동을 나타내는 메서드로 이루어집니다.
여기서 클래스는 Hello이며, public class Hello { } 로 작성 되었습니다.
메서드(method)는 객체의 행동을 나타내며, 여기서 Hello 클래스의 메서드로 는 main 메서드가 있습니다.
public static voic main(String args) { } 로 작성 되었습니다.
클래스와 메서드 모두 중괄호 { } 블록으로 표현되는데, 어디서부터 어디까지가 클래스고 어디까지가 메서드인지를 나타내기 위한 블록이라고 생각하면 됩니다.
main 메서드
클래스는 객체의 행동을 나타내기 위한 메서드를 가질 수 있다고 했습니다.
Hello 클래스를 보면 main이라는 이름의 메서드를 가지고 있는데, main 메서드는 자바 프로그래밍에서 아주 중요한 개념입니다.
메서드의 이름은 우리가 마음대로 정의할 수 있는데, main 메서드 만큼은 특이케이스의 메서드입니다.
자바 프로그램은 JVM이라는 자바 가상 머신을 통해 실행된다고 했습니다.
이전글에서 명령어로 java Hello 를 통해 Hello 클래스를 JVM을 통해 실행한 것을 기억하실 겁니다.
여기서 JVM이 최초 프로그램을 실행할 때 찾는 것이 클래스의 main 메서드입니다.
이것은 자바 규칙에 정해져 있는 것으로 프로그램의 시작점은 main 메서드를 가진 클래스의 main 메서드(말이 이상하네요) 로 한다! 라고 정해져 있기 때문입니다.
JVM은 java Hello 라는 명령을 받자 마자 Hello 클래스에 main 메서드가 존재하는지 확인한 후 main 메서드를 실행합니다. 따라서 우리가 앞으로 자바 프로그램을 작성할 때에는 최초에 프로그램의 시작이 어디서부터인지를 main 메서드를 작성함으로써 명시해 줄 수 있습니다.
여기서 main(String[] args) 라든지 main 메서드 선언부의 public static void 라든지 이러한 키워드들은 지금 당장 알지 못해도 전혀 상관없습니다. 여기서 중요한 점은 main 메서드가 자바 프로그램의 최초 시작점 이라는 것. main 메서드는 프로그램에 단 하나만 존재해야 된다는 것. public static void main(String[] args){ } 와 같이 작성해야 된다는 것 입니다.
main 메서드 안의 내용
main 메서드 안의 내용을 보면 다음과 같은 코드가 있습니다.
1 |
System.out.println("Hello World"); |
cs |
이는 다른 클래스의 메서드를 사용한 것인데, 간단히 설명하자면 표준 출력문입니다.
표준 출력이란 콘솔 또는 터미널 이라고 불리우는곳에 우리가 지정한 문자들을 출력하는 것을 의미합니다.
우리는 이전글에서 명령 프롬프트라는 터미널을 사용했고 프로그램을 실행했을 때 터미널에 Hello World라는 문자들을 출력한 것입니다.
메서드 안에서 이렇게 실행되는 코드구문 끝에는 꼭 ;(세미콜론)을 붙여주어야 합니다.
'자바[Java]' 카테고리의 다른 글
[JAVA] Java I/O(입출력) [1] 입출력 및 스트림 개념 (0) | 2018.07.07 |
---|---|
[JAVA] Java 명령행 매개변수(args 배열)값 넘기면서 실행하기 (String[] args에 대하여) (0) | 2018.06.28 |
[JAVA] 자바 첫 번째 프로그래밍 Hello World 출력 코딩하기 (2) | 2018.05.10 |
[JAVA] 자바 언어의 특징 (0) | 2018.02.15 |
[JAVA] 사용자 정의 예외 (0) | 2017.12.29 |