브래의 슬기로운 코딩 생활
JAVA 프로그래밍 13주차 정리 본문
? 와일드 카드(wild card)
기능
•unknown type, 즉 아직 정해지지 않아서 다수의 타입을 표현하는데 사용할 수 있는 기능
종류
•Upper Bounded Wildcard
•Unbounded Wildcard
•Lower Bounded Wildcard
Java I/O, Formatting
Java IO 스트림(stream)
Stream 정의
•데이터의 흐름
특징
•한 쪽 방향으로만 흘러간다.
•선입선출(FIFO, First-IN-First-Out) 구조를 갖는다.
•서로 연결될 수 있다.
•지연이 발생할 수 있다.
•바이트 스트림과 문자 스트림으로 나눌 수 있다.
스트림 분류
방향에 따른 분류
입력 스트림
- 키보드, 마우스, 스캐너 등과 같은 입력 장치로부터 입력된 데이터가 순서대로 프로그램으로 흘러가는 데이터 흐름
출력 스트림
- 프로그램에서 전송하는 데이터가 프린터, 콘솔 등과 같은 출력 장치로 순서대로 흘러가는 데이터 흐름
처리 방식에 따른 분류
바이트 스트림(Byte Stream)
- 바이트 단위로 데이터를 전송한다.
- 바이트 입력 스트림은 InputStream을 포함한다.
- 바이트 출력 스트림은 OutputStream을 포함한다.
문자 스트림(Character Stream)
- 유니코드형식의 문자들(데이터)은 전송한다.
- 문자가 아닌 데이터의 경우 정확환 처리가 어려울 수 있다.
- 문자 입력 스트림은 Reader를 포함한다.
- 문자 출력 스트림은 Writer를 포함한다.
입력 처리
try {
//입력 스트림을 생성한다.
//입력 스트림으로부터 데이터를 읽는다.
} catch(IOException ioe) {
System.out.println(ioe.getMessage);
}
finally {
//입력 스트림을 종료한다.
}
출력 처리
try {
//출력 스트림을 생성한다.
//출력 스트림으로부터 데이터를 읽는다.
} catch(IOException ioe) {
System.out.println(ioe.getMessage);
}
finally {
//출력 스트림을 종료한다.
}
java.io.* 패키지
InputStream
- AudioInputStream
- ByteArrayInputStream
- FileInputStream
- FilterInputStream
- InputStream
- ObjectInputStream
- PipedInputStream
- SequenceInputStream
- StringBufferInputStream
OutputStream
- ByteArrayOutputStream
- FileOutputStream
- FilterOutputStream
- ObjectOutputStream
- OutputStream
- PipedOutputStream
File, Console
바이트 스트림(Byte Stream)
종류
java.io.InputStream
- FileInputStream
- ByteArraryInputStream
- DataInputStream
- FilterInputStream
//BufferedInputStream
java.io.OutputStream
- FileOutputStream
- ByteArraryOutputStream
- DataOutputStream
- FilterOutputStream
- BufferedOutputStream
문자열 스트림(Character Stream)
java.io.Reader
- FileReader
- StringReader
- InputStreamReader
- BufferedReader
java.io.Writer
- FileWriter
- StringWriter
- OutputStreamWriter
- PrintWriter
- BufferedWriter
Buffer를 활용한 성능 향상
Buffer
정의
- 속도 차이가 있는 하드웨어 장치들 또는 우선 순위가 다른 프로그램의 프로세스들에 의해 공유되는
데이터 (중간) 저장소를 의미한다.
특징
- 적절한 버퍼의 크기와 효율적인 관리가 성능에 매우 중요하다.
동작
- flush() : 버퍼에 보관된 데이터를 실제 출력 스트림에 출력한다.
종류
- BufferedInputStream
- BufferedOutputStream
- BufferedReader
- BufferedWriter
BufferedReader
주요 메소드
- readLine()
- BufferedReader br = new BufferedReader(new FileReader("foo.in"));
String line = br.readline();
Filter를 이용한 기능
java.io.FilterInputStream
- BufferedInputStream
- CheckedInputStream
- CipherInputStream
- DataInputStream
- DeflaterInputStream
- DigestInputStream
- InflaterInputStream
- LineNumberInputStream
- ProgressMonitorInputStream
- PushbackInputStream
java.io.FilterOutputStream
- BufferedOutputStream
- CheckedOutputStream
- CipherOutputStream
- DataOutputStream
- DeflaterOutputStream
- DigestOutputStream
- InflaterOutputStream
- PrintStream
java.nio.* 패키지
java.nio.Buffer
- ByteBuffer, CharBuffer, DoubleBuffer, FloatBuffer, IntBuffer, LongBuffer, ShortBuffer
java.util.Scanner
정의
- 정규 표현식(regular expression)을 이용하여 기본 자료형과 스트링을 파싱할 수 있는 간단한 텍스트 스캐너 클래스
주요 생성자
- Scanner(File source), Scanner(InputStream source), Scanner(Path source), Scanner(String source)
주요 메소드
- hasNext(), next(), nextLine()
특징
- 구분자 패턴(delimiter pattern)을 사용하여 입력을 토큰들로 구분할 수 있음. 기본은 공백(whitespace)문자 임
- 스캐닝 연산은 입력을 기다리는 동안 블록할 수 있다.
- 스캐너는 스레드 안전하지 않다. 외부 동기화가 필요함
- 예)
String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
System.out.println(s.nextInt());
System.out.println(s.nextInt());
System.out.println(s.next());
System.out.println(s.next());
StringTokenizer vs split()
- 문자열을 토큰들로 구분하는 기능을 제공
java.util.StringTokenizer
- hasMoreTokens(), nextToken()
- 모든 공백 스트링 객체 무시
java.io.String
public String[] split(String regex)
- 중간에 있는 공백 스트링 객체는 반환하지만 맨 마지막에 존재하는 공백 스트링 객체는 무시
public String[] split(String regex, int limit)
- limit에 따라 맨 마지막에 존재하는 공백 스트링 객체도 반환
'2-1 > JAVA 프로그래밍' 카테고리의 다른 글
JAVA 프로그래밍 기말고사 정리 (0) | 2023.06.21 |
---|---|
JAVA 프로그래밍 12주차 정리 (0) | 2023.05.23 |
JAVA 프로그래밍 11주차 정리 (0) | 2023.05.16 |
JAVA 프로그래밍 10주차 정리 (2) | 2023.05.09 |
JAVA 프로그래밍 중간고사 정리 (0) | 2023.04.29 |