2011년 4월 21일 목요일

화면에 문장을 출력하기

public class Test1
{
public static void main(String[ ] args)
{
System.out.println("");
System.out.print("나는 클래스 Te");
System.out.print("st1의 메인 ");
System.out.println("메소드야.");
System.out.println(" ");
System.out.print("모든걸 총괄하는");
System.out.println(" 곳이지.");
System.out.println();
System.out.println("모두들~ 방가 방가^^ ");
}
}

Test1이라는 자바소스를 계속 붙들고 있는데 오늘은 기필코 이 프로그램 공부를 끝내도록 하겠다.^^ 메인메소드 안에 여러가지 쓰여있는데 다 비슷비슷해 보인다. 저번 시간에 메인메소드에 대해서 설명하였으니 이제 본격적으로 안에 있는 코드를 들여다보자.

System.out.println 이라는 문구와 System.out.print 이라는 문구가 대표적으로 달라보일 것이다. 여기서 딴 얘기를 잠깐 하겠다. 왜 쩜(.)을 찍는지에 관해서 말이다. 우리가 인터넷 도메인을 주소에 칠때도 뭐뭐 쩜 뭐뭐 닷(쩜) 컴이라고 쓰지 않나? 즉, 쩜이란 어디서부터 어디까지를 나타내주는 일종의 경로라고 생각하면 이해하기가 쉽다. 컴퓨터상에서 여러분이 디렉토리를 만들어본 적이 있을 것이다. 그리고 안에다 또 디렉토리를 만들고 이러면 경로를 여러분이 맨 바깥 디렉토리를 만든 것에서부터 안으로 들어가면서 나타나는 안쪽 디렉토리들과 구분을 쉽게 하기위해 \표시로 주소창에 나타나는 것을 보았을 것이다. 인터넷 주소도 사실 그러한 원리로 경로를 쩜을 찍어서 나타내고 있는 것이다. 다른 개념이 있지만 여기서도 지금은 똑같이 이해하기 바란다. 한꺼번에 너무 많은걸 알려고 하지 말아라. 다친다.^^ System이라는 곳에서 out으로 그리고 println 이나 print 로 도달해서 명령을 전달한 것이다. 물론 최종 종착지는 print 구문이니 뭔가를 출력하려는 것을 우리는 직감(?)으로 알수 있을 것이다.

그럼 다시 코드로 돌아가서 System을 보니 뭔가 느끼는게 없는가? 여기서 뭔가 느껴지면 그대가 정말 대단하게 보일텐데 말이다. 누군가 찾아냈기를 바라면서 설명하겠다. 바로 첫글자가 대문자라는 것이다. 에이~ 그게 뭐 대수라고...하는 이가 있을지 모르지만 여지껏 우리는 어떻게 배워왔나? 클래스는 첫글자를 알아보기 쉽게 대문자로 쓰자고 하지 않았나? 그렇다. System도 클래스인 것이다. 서로간에 규칙을 정하고 이렇게 지켜주면 코드만 봐도 감(?)이 딱 오는 것이다. 그럼 out은? println은? 속사포로 너무 질문하였나? 이걸 한꺼번에 풀어서 설명해 보겠다. System 클래스가 있는데 이 클래스 안에서 하는 일이 여러가지 있지만 그 중에 하나가 out이라는 객체를 이용해서 println() 메소드를 불러다가 괄호안에 있는 입력값을 화면에 출력하는 일이다. 괄호()안에는 " " 따옴표 사이에 출력하고 싶은 문자를 쓰면 된다. 이해가 팍팍 가나? 이미 실행해 보라고 했으니 이미 어느 정도 파악하고 있어야 정상이다. 아니라면 농땡이 피고 있었다는 것이니 자기 머리에 자진 꿀밤 한대씩 주고 반성하도록 하자.

System에 관련된 비밀이 또 하나 있다. 무엇인지 아는가? 이거 파악한 이가 있다면 필자가 바로 쇼크를 먹을텐데... 바로 System이라는 클래스가 어디에 있느냐는 것이다. 불러서 쓰는건 좋다 이거다. 그런데 자바소스 어디에도 System 이라는 클래스를 볼수가 없는데 어떻게 쓴단 말인가? 실행을 해보았으면 알것이다. System 클래스가 없는데도 작동하고 있는 이 놀라운 사실을 말이다. System이라는 클래스는 java.lang.System 이라는 경로에 위치하고 있다. 자바에서는 많이 쓰이는 패키지들을 편리하게 이용하라고 모아놓았는데 그것을 자바 Java API(Application Programming Interface)라고 부르며 그 안에 여러 분류별로 경로가 나누어지는데 가장 기본적으로 많이 쓰이는 것이 java.lang이라는 패키지이다. 이 패키지안에 System 클래스를 비롯 여러 클래스가 들어있다. 예를 들어, 지금 사용하고 있는 System이라는 클래스를 쓰려면 코드 맨위에다가

import java.lang.System;

또는

import java.lang.*;

이런 식으로 표기해 놓아야 해당 패키지 안에 있는 클래스를 이용할수가 있다.(*은 전부를 의미한다. 한마디로 java.lang이라는 경로 안에 있는 클래스 전부를 의미한다.) 자바 소스를 보다보면 import라고 쓰여진 것을 본 이가 있을지도 모르겠다. 바로 이런 용도로 쓰인 것인데 "import 수입하다" 라는 뜻을 가지고 있는 것을 안다면 아마 금방 이해가 갔으리라 생각한다. import는 컴퓨터 용어로는 다른 프로그램에서 데이터를 불러오다라는 의미로도 쓰인다. 이제 됐나? 어허~ 됐다고 하면 안돼지. 왜? 우리의 자바 소스를 다시 한번 보자. 이런 구문이 어디 있는지? 없지? 이상하지? ㅎㅎ 바로 그거다. 이런 구문이 맨 윗줄에 있어야 쓸수가 있는데 이게 없는데도 쓸수 있단 말이다. 왜냐고? 화면을 출력하고 그밖에 숫자나 문자를 다루는 언어요소인데 이런건 거의 모든 자바파일 만들때마다 쓸수 밖에 없다. 그럼 매번 import java.lang 어쩌고 매번 쳐야하는 수고를 해야한다. 이런 수고(?)를 덜어주고자 자바에서는 이 패키지를 기본적으로 로딩한다. 따라서 이 안에 있는 내용은 import 한걸로 가정하고 쓸수가 있는 것이다.

많이 이해가 됐으리라 믿는다. 그럼 print와 println의 차이는? 프로그램을 실행해보고 코드보고 다시 결과보고 코드보고 하다보면 저절로 이해되게끔 소스에 심혈(?)을 기울여 만들어 놓았다. 따옴표 사이에 빈칸이 있는 것은 빈칸으로 읽어드리라고 그렇게 만들어 놓은 것이니 똑같이 있는 그대로 입력해서 실행해 보도록 하자. 해보면 왜 이렇게 빈칸까지 만들어 놓았는지 필자의 깊은 혜안(?)에 감탄을 금치 못할 것이다.ㅎㅎ 실행해 보면 아래와 같은 결과를 얻게 된다.

나는 클래스 Test1의 메인 메소드야.

모든걸 총괄하는 곳이지.

모두들~ 방가 방가^^

에러가 혹시 나는 이들이 있을지도 모르겠다. 자바파일 이름을 잘못 만들었던지 아니면 코드를 잘못쳤던지 그것도 아니면 보통 초보자들이 많이 범하는 대표적인 실수(?)일 것이다. 명령어 라인 끝에다가 ;(세미콜론)을 붙여야 된다는 것을 잊지 않았는지 다시 한번 확인하자. 그리고 설마 실행하는 방법을 까먹은 이들은 없겠지? 있다면 저번 강좌를 찾아보도록 한다. 자바 에디터를 쓰고 있다면 버튼 하나 눌리면 될텐데 그거 하나 못찾는다면 정말 평생 고생이다. 잘좀 하자. 이 예제에서는 끊어진 문장들이 하나로 연결될수 있음을 소스를 통해 보여주고 있다. print라는 메소드를 이용하면 출력이 끝난 그 자리에서 계속적으로 다음 메세지를 기다리는 것이고 println이라는 메소드를 이용하면 출력을 끝내고 다음줄로 가서 그 다음 메세지를 기다리게 됨으로 위와 같은 결과가 나오게 된다. 저번에 많은 내용을 공부하였으니 오늘은 이 정도로 강좌를 마친다. 너무 짧다고? 묻지도 말고 따지지도 말고 쉬어라. 언제 또 이렇게 쉬겠나? ㅎㅎ

혹시나 이해가 가지 않는 부분이 있으면 중간에 졸았다거나 뭔가 먹으면서 딴짓했던가 그럴 것이다. 반성하고 다시 읽어서 자기것으로 만들도록 하자. 특히 저번 강좌에서 다룬 메인메소드에 관한 내용은 그냥 넘어가도 안될건 없지만 확실하게 잡아놓으면 상당히 많은 시간과 노력을 절약하게 될것이니 이번 강좌를 통해서 자바를 처음으로 시작한 이들은 꼭 다시한번 읽어보길 추천한다. 이제 여러분은 위의 예제를 통해서 원하는 문자들을 화면에 마음껏 출력할수 있는 능력(?)을 가지게 되었다. 어렵게 얻은 소중한 능력을 다음에 만날때까지 마구마구 응용해 써보기 바란다.^^

댓글 4개: