최원종의 개발 블로그

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

Java/JAVA 유용한 클래스

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

chl6698 2026. 3. 20. 15:20

표준 입출력

표준입출력이란 프로그램이 기본적으로 사용하는 입력과 출력 장치와의 통로를 말함

 

표준 입출력 3가지

System.in   →  키보드에서 프로그램으로 들어오는 통로    (InputStream)
System.out  →  프로그램에서 콘솔로 나가는 통로          (PrintStream)
System.err  →  에러 메시지 전용 통로                   (PrintStream)

 


-코드

package io.ch13;

import java.io.IOException;

/**
 * 표준 입출력이란?
 * 자바에서 표준 입출력은 프로그램과 사용자간에 기본적인 데이터 교환 방법을 제공한다
 */
public class MySystemIn {
    public static void main(String[] args) {
        System.out.println("알파벳 하나를 쓰고 enter 키를 누르세요");
        int i;
        
        try {
            i = System.in.read();
            //주의 : 한글(3바이트)은 처리 불가 -> 깨진 문자나 의미없는 정수값이 출력됨
            System.out.println("------------------------");
            System.out.println(i);
            System.out.println((char) i);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}
//반환값이 byte가 아닌 int인 이유
read() 가 반환하는 값의 종류:
  - 정상 데이터      : 0 ~ 255 (1바이트 범위) -  (부호 없는 바이트 읽음)
  - 더 읽을 게 없음  : -1       ← 이게 핵심!
  즉, -1 = "더 읽을 데이터가 없다" (끝 신호)를 
           명확하게 표시하기 위해서 int로 반환 함

System.in.read() 문제점

System.in.read() 의 문제점 3가지:

1. 1바이트씩밖에 못 읽음  → 사용이 불편함
2. 한글 처리 불가          → 3바이트짜리 한글이 잘려서 깨짐
3. 타입 변환 직접 해야 함  → 숫자를 받으려면 직접 변환 코드 필요

 

 

자바 표준 입출력 핵심 요약

System.in
  → 키보드 입력을 1바이트씩 읽는 표준 입력 스트림
  → read() 반환값: 0~255 (데이터) 또는 -1 (끝)
  → 반환 타입이 int 인 이유: -1 을 끝 신호로 구분하기 위해
  → 한글 처리 불가, 실무에서는 Scanner / BufferedReader 로 감싸서 사용

System.out
  → println() : 출력 + 줄바꿈
  → print()   : 출력만 (줄바꿈 없음)
  → printf()  : 형식 지정 출력 (%s, %d, %f ...)

System.err
  → System.out 과 사용법 동일
  → 콘솔에서 빨간색으로 표시됨
  → 에러/경고 메시지 전용으로 구분해서 사용

 

'Java > JAVA 유용한 클래스' 카테고리의 다른 글

FileOutputStream  (0) 2026.03.20
FileInputStream  (0) 2026.03.20
자바 I/O 개론  (0) 2026.03.20
멀티 스레딩(multi-threading)  (0) 2026.03.13
Inner class(중첩 클래스)  (0) 2026.03.12