JAVA

자바 표준 입출력 (키보드, 콘솔)

jiyoon12 2025. 5. 28. 23:29

자바에서 표준 입출력(Standard Input/Output)은 프로그램과 사용자 간의 기본적인 데이터 교환 방법을 제공합니다.

 

표준 입출력의 핵심 요소

  1. System.in
    • **System.in**은 자바 프로그램의 표준 입력 스트림입니다. 기본적으로 이 스트림은 키보드 입력을 받습니다. 이는 InputStream 객체로, 바이트 기반의 낮은 수준의 입력 기능을 제공합니다. 일반적으로, 사용자로부터 텍스트를 읽기 위해 Scanner 클래스나 **BufferedReader**와 같은 더 높은 수준의 래퍼(wrapper)를 사용하여 쉽게 데이터를 처리할 수 있습니다.
  2. System.out
    • **System.out**은 자바 프로그램의 표준 출력 스트림으로, 텍스트 데이터를 콘솔에 출력합니다. 이 스트림은 PrintStream 객체로, println(), print(), printf() 등의 메소드를 제공하여 다양한 형식으로 데이터를 콘솔에 출력할 수 있습니다.
  3. System.err
    • **System.err**도 PrintStream 객체로, 주로 에러 메시지나 중요한 경고 메시지를 콘솔에 출력할 때 사용됩니다. **System.out**과 기능적으로 동일하지만, 일반 출력과 에러 출력을 구분하여 사용자에게 보여주는 데 도움을 줍니다.
package ch01;

import java.io.IOException;

/**
 * 표준 입출력이란?
 * 자바에서 표준 입출력은 프로그램과 사용자 간의 기본적인 데이터 교환 방법을 제공 합니다.
 */
public class MySystemIn {

    public static void main(String[] args) {
        // 표준 입출력 - 키보드, 모니터
        // System.in, System.out, System.err

        // 키보드에서 값 입력 받기 (Scanner)
        System.out.println("알파벳 하나를 쓰고 Enter 키를 누르세요");
        int i; // 입력된 바이트를 저장할 변수

        try {
            //System.in.read() 는 키보드에서 1바이트를 읽어 ASCII 코드(0~255)로 반환 처리
            // 주의: 한글(3바이트)은 처리 불가 깨진 문자나 의미 없는 정수값을 출력 함
            i = System.in.read();
            System.out.println("----------------");
            // 읽은 바이트의 정수값을 출력
            System.out.println(i);
            // 형 변환
            System.out.println((char)i);

        } catch (IOException e) {
            // 입력 중 오류 발생 시 스택 트레이스 출력
            e.printStackTrace();
            throw new RuntimeException(e);
        }

    } // end of main
}

 

package ch01;

import java.io.IOException;

/**
 * 입력 스트림 (in) 키보드에서 프로그램으로 데이터가 들어온다(스트림을 통해서)
 * 기능에 확장을 해보자.
 */
public class MySystemIn2 {

    public static void main(String[] args) {
        System.out.println("알파벳 열 개 쓰고 Enter 를 누르세요");

        int i;

        try {
            // 키보드에서 엔터는 \n 로 표현이 된다.
            while((i = System.in.read()) != '\n') {
                // 읽은 바이트의 정수값을 출력
                System.out.println("i: " +i);
                System.out.println("문자로 표현 : " + (char)i);
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}