티스토리 뷰

728x90

안녕하세요. 오늘부터 자바를 정말 세세하게 뜯어보도록 하겠습니다. 
저를 포함한 초보자 분들에게 도움이 됐으면 좋겠습니다.
초보자 분들은 수박 겉핥기 식으로 알고 넘어가지 마시고, 조금이라도 왜 이렇게 프로그램이 돌아가는지알고 가시는 시간이 됐으면 좋겠습니다.

1. 출력 뜯어보기

처음 프로그래밍을 시작하면 반드시 볼 수 있는 것이 "Hello World!" 입니다.

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

위 소스를 실행해보면 "Hello World"라는 글이 나오게 되는데요. 

왜 그렇게 나오는지는 알고 있으신가요? 하나씩 뜯어봅시다.
System 입니다. System은 사용자의 입력,출력, 에러, 보안등등 여러가지 기능을 가지고 있습니다. 
여기서는 출력에 초점을 맞춰보도록 하죠.

System.out 은 System안에있는 out을 가리키는 것입니다.(현재는 이렇게만 알고계세요!)
System안에 out은 밑에 소스와 같이 정의되어 있습니다. 
(public, static, final,변수는 지금 모르셔도 됩니다.) 


public static final PrintStream out = null;

단순하게  out은 null(아무것도 가지지 않은 상태) 입니다.
그럼 어떻게 out이 PrintStream에 접근 할 수 있을까요?
시스템 내부적으로 out은 설정됩니다. 따로 만지지 않으 System.out 은 콘솔창에 띄운다고 하네요.

(1) 코드에 PrintStream out 은  PrintStream출신인 이름이 out이라고 지금은 알고 계시면 됩니다.
그럼 out은 PrintStream출신인 만큼 PrintStream에 있는 정보를 알고 있고, 사용할 수 있습니다.


(2) public void println(String x) {
        synchronized (this) {
            print(x);
            newLine();
        }
    }


이제 out은 내부적으로 설정이 됐으니  println(); 은 어떻게 되느냐?
println()은 PrintStream에 정의되어 있어 PrintStream 출신인 out으로 접근이 가능합니다.
println()은 (2) 소스로 정의되어있습니다.
이과정을 거쳐 우리는 "Hello World"라는 단어를 콘솔에 출력하게 됩니다.
(※물론, 출력 과정은 이것보다 훨씬 더 내부적으로 복잡하게 구성되어있습니다. )

지금까지 출력을 하기 위해 System.out.println(); 이 어떤식으로 돌아가는지 자세히 뜯어보았습니다.
어떠신가요? 혹시 지금까지 암기해서 사용하고 있으셨지 않으셨나요?
이번기회에 System.out.println의 내용을 확실하게 알고 가시는건 어떨까요?

감사합니다.
다음은 입력편을 올리도록 하겠습니다!

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함