표준 입출력이란?
💡 학습 목표
1.표준 입출력의 핵심 요소
자바에서 표준 입출력(Standard Input/Output)은 프로그램과 사용자 간의 기본적인 데이터 교환 방법을 제공.
1. 표준 입출력의 핵심 요소
- System.in
- System.in은 자바 프로그램의 표준 입력 스트림이다. 기본적으로 이 스트림은 키보드 입력을 받는다.
- 이는 InputStream 객체로, 바이트 기반의 낮은 수준의 입력 기능을 제공한다.
- 일반적으로, 사용자로부터 텍스트를 읽기 위해 Scanner 클래스나 BufferedReader와 같은 더 높은 수준의 래퍼(wrapper)를 사용하여 쉽게 데이터를 처리할 수 있다.
- System.out
- System.out은 자바 프로그램의 표준 출력 스트림으로, 텍스트 데이터를 콘솔에 출력한다.
- 이 스트림은 PrintStream 객체로, println(), print(), printf() 등의 메소드를 제공하여 다양한 형식으로 데이터를 콘솔에 출력할 수 있다.
- System.err
- System.err도 PrintStream 객체로, 주로 에러 메시지나 중요한 경고 메시지를 콘솔에 출력할 때 사용된다. System.out과 기능적으로 동일하지만, 일반 출력과 에러 출력을 구분하여 사용자에게 보여주는 데 도움을 준다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter your name: ");
String name = scanner.nextLine();
System.out.println("Hello, " + name + "!");
System.err.println("This is an error message!");
}
}
시나리오 코드 1
package io;
import java.io.IOException;
public class MySystemIn {
public static void main(String[] args) {
// 키보드에서 데이터를 응용 프로그램 안으로 넣기
System.out.println("알파벳 하나를 쓰고 Enter를 누르세요");
// 바이트 동작 --> 0과 1로 구성
// 정수 -> byte, short, 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) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} // end of main
}
💡 바이트 기반 스트림
InputStream / OutputStream : 이 클래스들은 데이터를 바이트 단위로 읽고 쓰는 기본적인 기능을 제공합니다.
시나리오 코드 2
한 바이트 씩 여러 글자를 받을 수 있도록 기능 확장 (while)
package io;
import java.io.IOException;
public class MySystemIn2 {
public static void main(String[] args) {
// 키보드에서 데이터를 응용 프로그램 안으로 넣기
System.out.println("알파벳 하나를 쓰고 Enter를 누르세요");
// 바이트 동작 --> 0과 1로 구성
// 정수 -> byte, short, int, long
int i;
// 한 바이트씩 키보드의 값을 읽어라
try {
while( (i = System.in.read()) != '\n') {
System.out.println("i : " + i);
System.out.println("(char)i : " + (char)i);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} // end of main
}
'Java > Java 유용한 클래스' 카테고리의 다른 글
파일 출력 스트림(바이트 기반) - 11 (0) | 2024.05.16 |
---|---|
파일 입력 스트림(바이트 기반) - 10 (0) | 2024.05.14 |
자바 I/O 개론 - 8 (0) | 2024.05.14 |
Inner class(중첩 클래스) - 7 (0) | 2024.05.14 |
Thread에 wait와 notify - 6 (0) | 2024.05.13 |