문득 기본 자바의 기본 문법을 공부하다가 구글링 하다보면 기본서에 적혀있는 Scanner, System.out.println를 거의 활용하지 않는 것을 보고 BufferdReader과 Writer를 쓸줄 알아야한다고 깨달았다.
Scanner와 System.out.print 의 속도 부분 성능이 좋지 않아서 라고 한다. 더 자세한 차이는, BufferedReader/Writer는 버퍼에 담아두었다가 내보내고 쌓아두었다가 들여온다는 점 이다. 또한 멀티 스레딩 환경이나 대용량 input의 경우에서도 유리하다고 한다. 내부 구현은 추후 공부하도록 하고 사용법 정도만 이해하려고 한다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Number {
public static void main(String[] args) throws IOException {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write("test1");
bw.flush();
bw.close();
}
}
다음과 같이 sysout을 대체할 수 있는 것 같다.
Scanner를 대체할 BufferedReader이다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Number {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); //선언
String s = bf.readLine(); //String
//int i = Integer.parseInt(bf.readLine()); //Int
StringTokenizer st = new StringTokenizer(s); //StringTokenizer인자값에 입력 문자열 넣음
int a = Integer.parseInt(st.nextToken()); //첫번째 호출
int b = Integer.parseInt(st.nextToken()); //두번째 호출
String array[] = s.split(" "); //공백마다 데이터 끊어서 배열에 넣음
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write(array[0]);
bw.write(array[1]);
bw.write(array[2]);
bw.flush();
bw.close();
}
}
입력 1 2 3
출력 123
'JAVA > 문법, Collection' 카테고리의 다른 글
JAVA ASCII trick (0) | 2024.01.13 |
---|---|
JAVA abs function (0) | 2024.01.13 |
JAVA input.txt 파일경로 설정 (1) | 2024.01.11 |