Java

2024.05.14 Java 유용한 클래스 표준 입출력이란?

정훈5 2024. 5. 14. 10:02

 

 

자바에서 표준 입출력(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 io;

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);

		System.out.println("Enter your name : ");
		String name = sc.nextLine();

		System.out.println("Hello, " + name + "!");

		System.out.println("This is an error message!");

	} // end of main

} // end of class

 

시나리오 코드 1

더보기
package io;

import java.io.IOException;

public class MySystemIn {

	public static void main(String[] args) {

		// 키보드에서 데이터를 응용 프로그램 안으로 넣기
		System.out.println("알파벳 하나늘 쓰고 Enter를 누르세요");

		// 바이트 기반으로 동작한다. --> 0과 1로 구성되어 있다.
		// 정수 -> byte, shrot, int, long

		int i;
		// 한 바이트씩 키보드에 값을 읽어라
		try {
			i = System.in.read();
			System.out.println("-------------");

			// 출력
			System.out.println("i : " + i); // 알파벳이 숫자로 나온다

			// 문자로 변환하고 싶다면 --> 컴퓨터 안에 있는 문자표를 활용(인코딩)
			System.out.println((char) i); // 형 변환 시켜서 출력한다.

		} catch (IOException e) {
			e.printStackTrace();
		}

	}

}

💡 바이트 기반 스트림

InputStream / OutputStream: 이 클래스들은 데이터를 바이트 단위로 읽고 쓰는 기본적인 기능을 제공합니다.

 

 

시나리오 코드 2- 한 바이트 씩 여러 글자를 받을 수 있도록 기능 확장

더보기
package io;

import java.io.IOException;

public class MySystemIn2 {

	public static void main(String[] args) {

		// 키보드에서 데이터를 응용 프로그램 안으로 넣기
		System.out.println("알파벳 하나늘 쓰고 Enter를 누르세요");

		// 바이트 기반으로 동작한다. --> 0과 1로 구성되어 있다.
		// 정수 -> byte, shrot, int, long

		int i;
		// 한 바이트씩 키보드에 값을 읽어라
		try {
			while ((i = System.in.read()) != '\n') {
				System.out.println("i : " + i);
				System.out.println("(char) i : " + (char) i);
			}
//			i = System.in.read();
//			System.out.println("-------------");

			// 출력
//			System.out.println("i : " + i); // 알파벳이 숫자로 나온다

			// 문자로 변환하고 싶다면 --> 컴퓨터 안에 있는 문자표를 활용(인코딩)
//			System.out.println((char) i); // 형 변환 시켜서 출력한다.

		} catch (IOException e) {
			e.printStackTrace();
		}

	}

}