728x90
자바에서 System.out.println로 많은 양을 출력하면 시간이 오래 걸리기 때문에 BufferedWriter를 사용하여 빠른 출력을 한다.
근데 BufferedWriter를 사용하다 보면 숫자를 출력할 때 원하는 값이 나오지 않을 때가 있다.
1을 출력하고 싶어서 bw.write에 1을 넣었다고 해보자.
public static void main(String[] args) throws IOException {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write(1);
bw.flush();
bw.close();
}
결과는 아래와 같다.
분명히 int형과 String형을 구분 지어 매개변수로 전달받는데 왜 1로 넣어준 값이 그대로 나오지 않는지 당황할 수도 있다.
그 답을 찾기 위해 이번에는 65를 넣어보자.
public static void main(String[] args) throws IOException {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write(65);
bw.flush();
bw.close();
}
이렇게 65를 넣어주면 결과는 아래와 같다.
65를 넣어주었다고 해서 65가 출력되는 것이 아니라 A가 출력된다.
넣은 숫자가 그대로 출력되는 것이 아니고 아스키코드에 따른 문자가 출력되는 것이다.
그렇다면 숫자를 출력하고 싶을 때는 어떻게 해야 하는지 알아보자.
아래와 같이 숫자를 String형으로 변환시켜주면 된다. 아래와 같은 방법이 아니더라도 String형으로 변환만 시켜주면 된다.
public static void main(String[] args) throws IOException {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write(65 + "");
bw.flush();
bw.close();
}
실행결과는 다음과 같이 65가 잘 나오는 것을 볼 수가 있다.
728x90
'개발 > Java' 카테고리의 다른 글
[Java] Java - 자바 관련 이것저것 (Overriding, Singleton, Serializable, Comparable, Comparator 등등) (0) | 2022.03.22 |
---|---|
[Java] 자바 가상 머신 JVM(Java Virtual Machine)이란? (0) | 2021.11.01 |
[Java] 자바 컬렉션 시간복잡도 (Collection Time Complexity) (0) | 2021.10.30 |
[Java] 자바 String, StringBuffer, StringBuilder 차이 (0) | 2021.10.24 |