Java 프로그래밍의 첫걸음 - Hello World!!!

1. Java 프로그래밍의 첫걸음 - Hello World!!!

뭐든지 기본기가 중요한 법 입니다. 이번에는 모든 프로그래밍 언어에서 가장 기본적인 예제인 Hello World를 실행하는 코드를 살펴보겠습니다.
"Hello World" 한글로 표현하면 "안녕~ 세상아~" 일텐데 프로그래밍에 입문하는 예제로서는 적절한 문구 인것 같습니다.

일단은 가장 간단한 Hello World를 표현하는 법을 보고 걍 재미가 없으니 좀 더 Java 다양한 Hello World를 작성해 보고 그 코드에 대한 상세한 설명을 하도록 하겠습니다.
프로그래밍 툴이나 기타 설정에 대한 것은 다른 블로그에도 다양하게 나와 있으니 자신에서 적당한 툴과 JDK버전을 설치하여 실행해 보기 바랍니다.

가장 간단한 Hello World!!!


public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!!!");
}
}


위의 코드는 제 생각에 가장 간단한 형태의 Hello World 입니다. 일단은 걍 외우세요라고 말하고 싶지만 성질상 좀 토를 달아보겠습니다.

일단 public 이라는 키워드가 눈에 들어 옵니다. 'public' 아시겠지만 '공공의'라는 이야기 인데요, 이 '공공의'라는 의미를 이해하려면 그 뒤에 나오는 키워드를 눈여겨 봐야 합니다.
'class'라는 키워드가 눈에 들어오네요. 그리고 연이어 'HelloWorld'라는게 보입니다. 반갑네요 우리가 프로그래밍 하려는 Hello World가 보여서 말이죠 아무래도 이것은 이전에 나왔던 public이나 class와는 다른 느낌입니다. 
우리가 프로그래밍 하려는 단어이기 때문이죠. class는 어떠한 분류(개념)를 의미(사전적의미는 잘 모르지만)하는 것이고 HelloWorld가 우리가 프로그래밍 하려는 내용이라면 이를 해석하면 우리가 프로그래밍 하려는 Hello World는 어떠한 분류속에 속해야 한다는 것입니다. 이것이 클래스 입니다. 이러한 클래스는 누구나 사용할 수 있는 공공성을 가진것으로 볼 수 있습니다. 그 다음 나오는 것이 '{'인데 bracket 혹은 brace라고 하지요, 이것은 위의 클래스의 시작을 의미하는 기호로 보시면 될 듯 합니다. 물론 마지막의 '}' 또한 클래스의 끝을 나타 냅니다.

분류 안쪽에 보면 다시 public 이라는 키워드가 나오고 static, void 라는 키워드가 나옴을 알 수 있습니다. 클래스(분류) 안쪽에 존재하는 것으로 보아 이것은 클래스보다 안에 존재하는 개념 이라고 생각 됩니다. 이것이 Java언어에서 메소드(함수) 입니다. 그럼 메소드가 무엇인가 하면 말그대로 방법입니다. 
이전에 우리는 개념화된 분류의 범주를 클래스라고 하였는데 이 분류의 범주 중 어떠한 행위(?)를 규정해 놓은 것이 메소드인 것입니다. 어렵습니다. ㅜㅜ 일단은 그렇게 알고 넘어가시고 추후에 객체지향에 대한 언급에서 보다 자세히 살펴보도록 하겠습니다. 

메소드의 형식 또한 클래스와 비슷하게 제일 앞에 접근 지시자가 오고 그 다음에 이 메소드의 메모리상의 특성인 static(정적영역)을 나타내는 지시자가 옵니다.(static 키워드가 붙으면 정적영역의 메소드이고 없으면 힙영역의 메소드 이다.) 그리고 void(없음)라는 메소드의 리턴값의 타입을 의미하는 키워드가 나오고 비로소 main이라는 메소드의 이름이 나옵니다. 
함수명 바로 다음에 보통 함수에서 처리할 인자값이 들어가게 되는데 여기서는 String[](문자열객체 배열)이고 이름은 args 입니다. 

위의 코드의 메소드 영역을 살펴보니 메소드의 결과값은 없고(void) 인자값은 args인데 메소드안에서 args를 사용하지는 않고 있습니다. 대신 System.out.println("Hello World!!!")라는 문구가 사용되는 것을 볼 수 있습니다. 이것을 풀어서 말하면 System 이라는 클래스의 out 이라는 변수(객체변수)의 println 메소드로 우리가 컴퓨터 화면에 출력을 원하는 "Hello World!!!" 문자열을 인자로 넘겨주고 있음을 알 수 있습니다. 

아직은 어렵더라도 더 자세히 이야기 해보겠습니다. System이라는 클래스에 컴퓨터의 STD IO(컴퓨터의 표준 입출력 장치)를 제어하는 클래스를 변수화한 out 변수가 있는데 이 변수는 public이고 정적 영역에 존재하기 때문에 우리는 println이라는 메소드를 참조하여 비로소 화면에 "Hello World!!!"라는 문자열을 출력할 수 있는 것입니다. 어렵네요 일단은 걍 넘어가세요.

main 함수는 Java언어에서 프로그램이 시작되는 최초 시발점 입니다. 그러므로 하나의 프로그램이 실행되려면 반드시 하나는 존재하고 있어야 하는 것이지요. main함수의 인자는 보통 프로그램의 파라미터로 위의 프로그램을 시작하는 명령인 "java HelloWorld" 뒤에 공백으로 구분하여 입력된 문자열(스트링)들을 의미합니다.
그럼 위의 코드를 응용하여 사용자가 입력한 문자열이 화면에 출력되도록 한 코드는 아래와 같습니다. 차이점의 찾아서 비교해 보시기 바랍니다.
다음회에서는 보다 다양한 방법의 Hello World를 알아보도록 하겠습니다.


public class HelloWorld {
public static void main(String[] args) {
System.out.println(args[0]);
}
}


위의 코드를 java HelloWorld hellojava로 실행해 보세요.

댓글

이 블로그의 인기 게시물

생성자, 멤버변수, 멤버함수, 지역변수

클래스와 인스턴스

Swing/SWT 통합(번역)