본문 바로가기
[이직 면접] 질의 응답

[Java] System.out.println()에 대해해 설명하세요

by 막개발자 2020. 12. 29.

# 질의 응답 상황

[면접관]

지원자님 Java을 주로 사용하셨는데 System.out.println()에 대해서 간략하게 설명해주세요.

 

[막개발자] 

System.out.println()은 콘솔창에 값을 출력할 때 자주 사용하셨을 것 같습니다.

먼저, import 없이 사용할 수 있는 java.lang 패키지 하위에 java.lang.System 클래스 내부에 존재하는 정적 객체인 out이 있습니다.

그래서 객체를 별도로 생성하지 않고 점(.)을 찍어서 사용할 수 있습니다. 이 out 객체는 PrintStream 클래스의 객체이므로 PrintStream이 가진 println() 메서드를 사용합니다.

 

 

# 상세 설명

 

1. System.out.println()의 구성

  • System 클래스
    System 클래스는 Java의 java.lang 패키지에 포함된 클래스입니다. 이 클래스는 표준 입력, 출력, 오류 스트림 등을 처리하는 유틸리티 클래스입니다. 대부분의 메서드와 필드는 정적(static)으로 선언되어 있어, 객체를 생성하지 않고 직접 호출할 수 있습니다.
  • out 필드
    out은 System 클래스에 정의된 정적 필드로, PrintStream 클래스의 인스턴스입니다. System.out은 기본적으로 콘솔에 데이터를 출력하는 표준 출력 스트림을 나타냅니다. 내부적으로 버퍼링된 출력 스트림과 연결되어 있습니다.
  • println() 메서드
    println()은 PrintStream 클래스의 메서드로, 전달받은 데이터를 출력하고 줄 바꿈(개행)을 수행합니다. 출력 후 자동으로 \n(줄 바꿈 문자)을 추가합니다. 다양한 데이터 타입을 지원하며, 매개변수 없이 호출할 수도 있습니다.

2. 주요 특징

  • 자동 줄 바꿈
    println()은 데이터를 출력한 후 자동으로 줄 바꿈을 추가합니다. (반면, print()는 줄 바꿈 없이 출력합니다.)
  • 다양한 데이터 타입 지원
    문자열, 정수, 실수, 불리언, 객체 등 다양한 데이터 타입을 매개변수로 받을 수 있습니다.
  • 객체 출력
    객체를 출력하면 toString() 메서드가 호출되어 해당 객체의 문자열 표현이 출력됩니다.

3. System.out.println()의 동작 원리

println()은 내부적으로 print() 메서드를 호출한 후, 줄 바꿈 문자를 추가합니다. 출력 스트림은 JVM이 기본적으로 제공하는 표준 출력 스트림에 연결되어 있으며, 이 출력 스트림은 데이터를 콘솔(터미널)에 표시하도록 전달합니다.

4. System.out을 다른 스트림으로 리다이렉션

기본적으로 System.out은 콘솔에 출력되지만, 이를 파일이나 다른 출력 스트림으로 변경할 수 있습니다. 예를 들어, System.setOut()을 사용하여 출력 스트림을 변경할 수 있습니다.

5. 주의사항

  • 퍼포먼스
    많은 데이터를 반복적으로 출력할 경우 성능에 영향을 미칠 수 있습니다. 따라서 로그 라이브러리 사용을 고려하는 것이 좋습니다.
  • 디버깅 용도
    System.out.println()은 디버깅에 유용하지만, 실제 애플리케이션에서는 로깅 프레임워크를 사용하는 것이 권장됩니다. 예: Log4j, SLF4J.