펩시마이쪙
2017-09-22 11:42:27
4
910

자바에서 System.out.println() 질문 드려요.


자바를 칠줄만 알지 1도 모르는 뉴비인데...


System.out.println()이 궁금해 져서 System 클래스 내부를 봣더니


public final static PrintStream out = null; 로 정의 되어있고,


PrintStream클래스 안에 println() 메소드가 있어서 동작하더라고요.


그런데 저 형태의 구문을 우리가 일반 클래스에서 사용하게되면


NullPointException이 떠야 맞는것 같은데 어떻게 작동하는 건가요???


그리고 public final static PrintStream out = null; 와 동일하게


public final static PrintStream err = null; 로 정의되어 있는 static 변수로


System.err.println();을 호출할시 결과가 좀 다르더군요.


이게 사용자는 알 수 없는 자바 내부의 약속때문에 그런건지, 제가 아직 구문을 잘 몰라서 그러는건지...


어떻게 동작하는지 궁금합니다.

0
  • 답변 4

  • 20523
    1k
    2017-09-22 11:54:39
    클래스를 조금만 더 살펴보시면 힌트를 얻을 수 있지 않을지.


  • 거긴앙대
    2017-09-22 11:58:33

    println() 메서드도 static이면 out 객체가 null이여도 사용할 수 있죠

    println() 메서드에서 아마 out 객체를 할당하고 출력하는 기능일거 같은데..

    저도 한번 살펴봐야겠네요ㅎㅎ

  • 20523
    1k
    2017-09-22 12:24:20

    https://stackoverflow.com/questions/17989275/printstream-object-out-is-initialized-by-null-how-we-call-method-on-it


    eclipse, jdb를 통해서 breakpoint 걸어보려했으나, 잘 안되더군요.

  • 펩시마이쪙
    2017-09-22 13:34:02

    다들 감사합니다.

    그냥 내부적으로 일반 사용자는 알 수 없게 뭔가 처리를 했나보네요 ㅎㅎ

    이런거 신경끄고 어서 공부를....

  • 로그인을 하시면 답변을 등록할 수 있습니다.