자바의 콘솔 입출력에는 여러 방법이 있지만,
가장 기본적인 방법인 Scanner/System.out을 사용하는 방법과 BufferedReader/BufferdWritter을 사용하는 방법을 정리한다.
가장 일반적이고 가장 많이 사용하게 될 방법이다. (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 형 입력 및 리턴 (개행을 기준)
}
}
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 + "과 문자열의 연결도 가능합니다.");
}
}
Scanner / System.out 과 다르게 예외처리가 필수적이다.
1. try/catch절을 사용한다.
2. throws IOException을 사용한다. (선호)
또한, java.io.BufferedReader / java.io.BufferedWriter 을 import해줘야 사용가능하다.
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());
}
}
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()는 매우 느린 실행속도를 가지고 있기때문에, 최대한 적게 사용하는게 좋다.