BufferedReader와 BufferedWriter 그리고 StringBuilder와 BufferedWriter의 차이점.

SionBackEnd·2022년 7월 14일
0

자바 스터디

목록 보기
9/21
post-thumbnail

개요

이부분은 자바의 IO부분에 해당되는 얘기이다. 나는 지금까지 Scanner를 사용하는게 콘솔에서 입력을 할수있는 유일한 방법인 줄 알았다. 하지만, (여기에서 전부를 말하긴 힘들지만,) Scanner의 소스코드를 보면 일반 문자를 받고 if문을 돌려서 데이터타입이 int,String,double등등을 판별하여 값을 입력받는 것이기 때문에 시간이 상당히 오래걸리다고 보았다. 그래서 대부분 알고리즘 문제풀이에서 Scanner를 되도록 쓰지 않는다. 시간제한에 걸리기 때문이다.

소개

그래서 버퍼리더와 버퍼라이터가 뭐길래 알고리즘에서 많이들 사용하는것이가?

한마디로 정리하자면, 우리가 만약 흙을 옮긴다고 치자면 Scanner같은 경우는 흙을 퍼서 바로바로 가져다 두는 형식이고 버퍼들은 수레에 흙을 최대한 모아놓은다음 그 흙을 한번에 옮기는 것이다. 현실적으로 생각해도 바로바로 퍼서 나르는 행동은 힘들기도 하고, 효율도 별로 좋지않다. 따라서 이정도로 Scanner와 버퍼의 효율이 차이나는 것이다.

이론적인 설명은 아래에 링크를 통해서 깊게 공부하길 바란다. 내가 작성한것을 보는것보다 더욱 정확하게 정리해놓은 블로그링크를 아래에 남기겠다.

사용법

버퍼리더 버퍼라이터 사용법 정리 블로그

자바의 입출력 정리

자바 입출력 총 정리 블로그

나에게 하는 한마디

Scanner가 작성하는데에는 더욱 편하다. 하지만, 시간단축과 메모리를 덜 사용하는 프로그램을 만들기 위해서 손에 익을때까지 코드를 작성하고 또 작성하자!

22.07.28 내용추가

StringBuilder와 BufferedWriter의 차이점.

두개를 사용해보니 두가지 모두 한번에 모아서 출력하는 역활이 비슷해서 대체 두개의 차이가 무엇인지 궁금하여 구글링을 해보았다.

사용법

  1. BufferedWriter :
  • write() 메소드를 이용해 버퍼에 데이터를 입력하고
  • flush() 메소드를 이용해 버퍼에 담긴 내용을 비우면서 출력한다.
  • close() 메소드를 이용해 버퍼를 종료한다.
  • BufferedWriter도 마찬가지로 IOException 예외처리.
  1. StringBuilder
  • append() 메소드를 이용해 문자열을 계속 연결시킨다.
    • 띄어쓰기나, 다음칸으로 넘길거면, +"\n" , +" " 이렇게 append메소드 내부에 작성하면된다.
  • System.out.println(StringBuilder 참조변수명); 출력하면된다.

무엇이 다른가

BufferedWriter는 여러 곳에서 동시에 같은 문자열 인스턴스에 접근할 때 중복 점유를 막을 수 있는 장치가 되어 있다. 즉, 동기화 처리 때문에 StringBuilder에 비해 좀 더 무겁다.
따라서 특별한 사유(쓰레드)가 없다면, StringBuilder를 사용하는것이 일반적이다.

profile
많은 도움 얻어가시길 바랍니다!

0개의 댓글