[Java] 3. 버퍼와 출력스트림, 문자코드
1) 버퍼를 이용한 입/출력
1-1) 버퍼란 무엇일까?
▶버퍼란 한 곳에서 다른 곳으로 데이터를 전송할 때 일시적으로 보관하는 메모리 영역이다.
1-2) 버퍼를 왜 사용할까?
A → B 로 데이터를 전송을 하려고 하는데 B에서 다른 일을 수행하고 있다고 해보자.
▶버퍼가 없을때 : A → B
-
A는 B의 일이 끝날때까지 기다려야 한다.
-
병목현상이 일어날 수 있다.
▶ 버퍼가 있을때 : A → (버퍼) → B
-
A에서 처리된 결과가 버퍼에 저장이 된다.
-
B의 일이 끝나면 버퍼에 저장된 결과를 받을 수 있다.
결과적으로, 전체적인 업무 속도가 향상될 것이고 손실을 방지할 수 있다.
▶ 버퍼에 담는 작업을 버퍼링이라고 한다.
▶ 실행환경이 버퍼를 가지고 있다.
▶ 버퍼는 메인메모리에 준비한다.
2) 출력스트림 FileOutputStream
2-0) 개체와 객체
▶개체 : 관련있는 속성들이 모여서 의미있는 하나의 정보 단위를 이룬 것
▶객체 : 사물을 표현하는 단위
▶개체 명은 자바 플랫폼이 준비해 놓았다.
▶클래스란 키워드로 개체를 정의한다.
Public class PSH 라고 한다면 PSH가 개체명이 된다.
2-1) 출력 스트림을 이용한 비동기 처리
FileOutputStream fout = new FileOutputStream();
▶FileOutputStream은 개체, fout은 객체이름이다.
▶ fout의 이름을 가진 출력스트림을 생성해준다. (출력버퍼 생성)
방법 1.
FileOutputStream fout = new FileOutputStream("C:\workspace\Java\src\psh94.txt");
방법 2.
File file = new file("C:\workspace\Java\src\psh94.txt");
FileOutputStream fout = new FileOutputStream(file);
▶write(); 함수로 버퍼에 쓰기를 처리한다.
fout.write();
▶쓰기를 수행한 후 버퍼에 담긴 것을 파일로 써준다. (버퍼를 비워준다.)
fout.flush();
▶버퍼를 닫아준다.
fout.close();
2-2) Package
▶ 클래스가 많아지면 클래스명, 파일명이 같아질 수 있다.
▶ 패키지명도 같을 수 있으므로 도메인을 등록해 사용할 수 있다.
ex) PSH.com 처럼 등록해 사용할 수 있다.
위와 같은 도메인을 등록해 사용한다면 패키지 명은 com.PSH.ex1과 같이 될 수 있다.
▶만약 패키지 안에 있는 Game.class를 사용하는 game을 만들고 싶다면
com.PSH.ex1.Game game = new com.PSH.Game();
을 써주면 되지만 너무 길다고 생각할 수 있다. 그럴때는 아래와 같이 해주면 된다.
import com.PSH.ex1.Game;
public class Program{
.
.
.
Game game;
▶ 해당 패키지를 모두 불러오고 싶을 때에는 패키지 뒤에 *을 붙여준다.
ex) import com.PSH.ex1.* ;
▶패키지 명에 java를 쓰지 않도록 한다.
3) 문자코드
3-0) fout.write(65)를 입력하면 'A'가 출력된다 ?
▶입력한 값이 버퍼에 들어갈 때에는 키코드로 들어간다.
3-1) ASCII, UNICODE
▶기본은 ASCII(아스키)코드
▶ ASCII + KR + ... = EUC-KR
▶ ASCII + KR + JP + ... + CN = UNICODE
▶ ACSII 코드 이후 번호가 달라지는 문제때문에 EUC-KR 거의 쓰지 않게 됨
4) 문자와 문자열
4-1) 문자열
▶'H','E','L','L','O'
-
'H','E','L','L','O'는 하나의 문자열이 아님
-
0을 구분자로 넣어주자
-
'H','E','L','L','O',0 은 하나의 문자열
-
'H','E','L','L','O',0 →"HELLO"
▶'H','E','L','L','O',0,'H','I',0,'H','I',0
4-2) 문자열 출력
System.out.write(65);
System.out.write(66);
System.out.write(67);
System.out.write(68);
System.out.write(69);
System.out.flush();
▶ "ABCDE"가 출력된다
▶ System.out.print("Hello");
입력 시, "Hello"가 출력 된다.
5) ESCAPE 문자
▶ 아래 코드 작성 시, 다음과 같이 출력된다.
"HELLO I'm PSH".
System.out.print("Hello");
System.out.print("I'm");
System.out.print("PSH");
▶다음과 같이 출력하고 싶다면 ESCAPE 문자를 붙여준다.
"Hello"
"I'm"
"PSH"
System.out.print("Hello\n");
System.out.print("I'm\n");
System.out.print("PSH\n");
▶ESCAPE 문자표
6) 숫자 출력
▶System.out.print는 입력값 그대로를 출력한다.
System.out.print("I'm HAPPY"); →"I'm HAPPY"
▶System.out.printf는 숫자나 문자를 출력할 수 있다.
System.out.printf("총점 : %d", TOTAL); →TOTAL이 60이라면 "총점 : 60"
▶포맷 문자열과 형식 지정자
Author And Source
이 문제에 관하여([Java] 3. 버퍼와 출력스트림, 문자코드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@psh94/3.-버퍼와-출력스트림-문자코드저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)