Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

브래의 슬기로운 코딩 생활

JAVA 프로그래밍 13주차 정리 본문

2-1/JAVA 프로그래밍

JAVA 프로그래밍 13주차 정리

김브래 2023. 5. 31. 01:23

? 와일드 카드(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에 따라 맨 마지막에 존재하는 공백 스트링 객체도 반환