[Java] 자바의 콘솔 입출력

dgw0620·2023년 5월 13일

자바의 콘솔 입출력 정리

자바의 콘솔 입출력에는 여러 방법이 있지만,
가장 기본적인 방법인 Scanner/System.out을 사용하는 방법과 BufferedReader/BufferdWritter을 사용하는 방법을 정리한다.


Scanner / System.out

Scanner을 이용한 콘솔 입력

가장 일반적이고 가장 많이 사용하게 될 방법이다. (JAVA8 버전 이후부터 사용가능하다.)

import java.util.Scanner;	// Scanner 클래스 호출
 
public class Main {
	public static void main(String[] args) {
 
		Scanner in = new Scanner(System.in);	// Scanner 객체 생성
 
		byte a = in.nextByte(); 		// byte 형 입력 및 리턴
		short b = in.nextShort(); 		// short 형 입력 및 리턴
		int c = in.nextInt(); 			// int 형 입력 및 리턴
		long d = in.nextLong(); 		// long 형 입력 및 리턴
 
		float e = in.nextFloat(); 		// float 형 입력 및 리턴
		double f = in.nextDouble(); 	// double 형 입력 및 리턴
 
		boolean g = in.nextBoolean(); 	// boolean 형 입력 및 리턴
 
		String h = in.next(); 			// String 형 입력 및 리턴 (공백을 기준)
		String i = in.nextLine(); 		// String 형 입력 및 리턴 (개행을 기준)
	}
 
}

System.out을 이용한 출력

print, printf, println은 다른 용도로 사용

public class Main {
    public static void main(String[] args) {
        System.out.print(7);         // print() 메소드는 줄 바꿈을 하지 않음.
        System.out.println(3);       // 정수 출력
        System.out.printf("%d", 3);  // format의 형태로 출력
        System.out.println(3.14);    // 실수 출력
        System.out.println("자바!"); // 문자열 출력
        System.out.println("문자열끼리의 " + "연결도 가능합니다.");
        System.out.println("숫자" + 3 + "과 문자열의 연결도 가능합니다.");
    }
}

BufferedReader / BufferedWriter

Scanner / System.out 과 다르게 예외처리가 필수적이다.
1. try/catch절을 사용한다.
2. throws IOException을 사용한다. (선호)
또한, java.io.BufferedReader / java.io.BufferedWriter 을 import해줘야 사용가능하다.

BufferedReader

BufferedReader은 Scanner보다 속도가 빠르다. (훨씬)
또한, 버퍼사이즈도 Scanner은 1024 char, BufferedReader은 8192 char이기 때문에 입력이 많을 경우 BufferedReader가 유리하다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String s = br.readLine();
        int i = Integer.parseInt(br.readLine());
    }
}

BufferedWriter

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;


public class Main {
    public static void main(String[] args) throws IOException {
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        String str = "abcdef"; // 출력할 문자열
        bw.write(str); // 출력
        bw.newLine(); // 줄바꿈
        bw.flush(); // 남아있는 데이터 모두 출력
        bw.close();
    }
}

write()를 사용하여 버퍼에 출력하고 flush()를 사용하여 출력하여 보여준다.
flush()는 매우 느린 실행속도를 가지고 있기때문에, 최대한 적게 사용하는게 좋다.

0개의 댓글