프로그래밍을 해보면서 출력을 많이 해봤을 것이다.

왜 출력되는지 궁금하지 않는가? 그래서 찾아봤다.


1. System 클래스의 out이란 필드는 출력객체를 넣는 곳이다..


2. System 클래스는 java.lang 모듈에 포함되어 있는 클래스다.


3. System 클래스의 필드인 out은 정확히는 PrintStream 객체를 넣을 수 있는 필드다.


4. PrintStream 클래스는 java.io 모듈에 포함되어 있는 클래스다.


5. PrintStream 클래스 내부에 println이란 메서드가 존재하고, 이를 사용하기 위해서 PrintStream 객체를 받아야 한다.


6. println 메서드는 같은 클래스에 있는 메서드를 참조하고 있다.


7. print 메서드는 받은 인수에 대해서 값 변환을 시키고 같은 클래스에 있는 write에 맡긴다.


8. write 메서드는 해당 클래스 내에서만 써먹을 수 있다. 


9. textOut은 해당 클래스 에서 만들어졌으며, write 메서드가 생성된 다른 클래스를 객체로 보유할 수 있다.


10. 해당 write 메서드는 java.io.Writer에 포함되어 있다.


11. 진짜 섬세한 코딩을 위해 원본은 필요한 인수를 모두 물어보고 있어다.


12. 컴퓨터가 그나마 알만한 원시 타입으로 교체되어 들어갈 수 밖에 없는 것 같다.


13. 갈 수 있는 한 가장 깊이 들어갔다. 이것이 바로 콘솔창에 문자열을 써줬던 진범이다. 


결론: 출력은 컴파일러가 구성해준다.

직접 출력을 하고 싶었는데 언어가 저렇게 개판이라 실망했더면 어셈블리어나 기계어를 하시길