객체 입출력 보조 스트림 자바는 메모리에 생성된 객체를 파일 또는 네트워크로 출력할 수 있다. 객체는 문자가 아니기 때문에 바이트 기반 스트림으로 출력해야한다. 객체를 출력하기 위해서 객체의 데이터(필드값)을 일렬로 늘어선 연속적인 바이트로 변경해야 하는데, 이것을 객체 직렬화(serializaion)라고 한다. 반대로 파일에 저장되어 있거나 네트워크에서 전송된 객체를 읽을 수도 있는데, 입력 스트림으로부터 읽어들인 연속적인 바이트를 객체로 복원하는 것을 역직렬화(deserializaion) 라고 한다. 자바의 객체를 입출력할 수있는 두 개의 보조스트림인 ObjectInputSteam과 ObjectOutputStream을 제공한다. ObjectOutputStream은 바이트출력스트림과 연결되어 객체를 직..
Writer는 문자기반출력스트림의 최상위클래스로 추상클래스이다. 모든 문자 기반출력 스트림클래스는 이 클래스를 상속받아서 만들어진다. Writer 클래스에는 모든 문자 기반 출력스트림이 기본적으로 가져야 할 메서드가 정의되어 있다. 리턴타입 메서드 설명 void write(int c) 출력스트림으로 주어진 한 문자를 보낸다 void write(char[ ]cbuf) 출력스트림으로 주어진 문자배열 cbuf의 모든 문자를 보낸다. void write(char[ ] cbuf, int off, int len) 출력스트림으로 주어진 문자 배열cbuf[off]부터 len개까지의 문자를 보낸다. void write(String str) 출력스트림으로 주어진 문자열을 전부 보낸다. void write(String st..
OutputStream 바이트기반 출력스트림의 최상위 클래스로 추상클래스이다. 모든 바이트 기반 출력 스트림클래스는 이 클래스를 상속받아서 만들어진다. OutputStream 클래스에는 모든 바이트 기반 출력스트림이 기본적으로 가져야할 메서드가 정의되어 있다. 리턴타입 메서드 설명 void write(int b) 출력스트림으로 1바이트를 보낸다. void write(byte[ ] b) 출력스트림으로 주어진 바이트 배열 b의 모든 바이트를 보낸다; void write(byte[ ] b, int off, int len) 출력스트림으로 주어진 바이트 배열 b[off]부터 len개까지의 바이트를 보낸다 void flush() 버퍼에 잔류하는 모든 바이트를 출력한다. void close() 사용한 시스템 자원을 ..
Reader Reader는 문자기반 입력스트림의 최상위클래스로 추상클래스이다. 모든 문자 기반 입력 스트림은 이 클래스를 상속받아서 만들어진다. Reader클래스에는 문자기반 입력 스트림이 기본적으로 가져야 할 메서드가 정의되어 있다. 리턴타입 메서드 설명 int read() 입력스트림으로부터 한개의 문자를 읽고 리턴한다. int read( char[ ] cbuf ) 입력 스트림으로부터 읽은 문자들을 매개 값으로 주어진 문자 배열cbuf에 저장하고 실제로 읽은 문자수를 리턴한다. int read( char[ ] cbuf, int off, int len) 입력스트림으로부터 len개의 문자를 읽고 매개값으로 주어진 문자배열 cbuf[off]부터 len개까지 저장한다. 그리고 실제로 읽은 문자수인 len개를 ..
a.txt 파일을 리소스 파일을 가져오기 위해서는 문자단위스트림을 할지, 바이트단위스트림을 할 지 고려해야한다. 이 파일의 경우에 한글이 섞여 있을 수 있기때문에 문자단위스트림으로 노드스트림을 결정하였다. 바이트 기반 스트림은 그림, 멀티미디어, 문자등 모든 종류의 데이터를 받고 보낼 수 있다. 그렇지만 한글의 경우에는 한글자당 3바이트가 차지하기 때문에 문자단위 스트림을 사용하는 것이 더 효율적인 방법이 된다. Reader은 문자기반입력 스트림의 최상위 클래스이다. 자원을 사용할 때 우선적으로 리소스를 결정해야 한다. 1. 리스소결정 : a.txt파일 2. 노드스트림결정: FileIOTest- 문자단위스트림(한글값이 있을수 있기때문에 import java.io.FileNotFoundException; ..
프로그램에서는 데이터를 외부에서 읽고 다시 외부로 출력하는 작업이 많이 이루어진다. 데이터는 사용자로부터 키보드를 통해 입력될 수 도있고, 파일 또는 네트워크로부터 입력될 수 도 있다. 데이터는 반대로 모니터로 출력될 수도 있고, 파일로 출력되어 저장될 수도 있으며 네트워크로 출력되어 전송될 수도 있다. 입력스트림과 출력 스트림 프로그램을 기준으로 들어오는 것을 입력스트림 , 나가는 것을 출력스트림이라고 한다. 입력스트림의 출발지는 키보드, 파일, 네트워크상의 프로그램이 될 수 있고, 출력스트림의 도착지는 모니터, 파일, 네트워크상의 프로그램이 될 수 있다. 프로그램이 네트워크상의 다른 프로그램과 데이터 교환을 하기 위해서는 양쪽 모두 입력 스트림과 출력 스트림이 따로 필요하다. 스트림의 특성이 단방향이..
선언위치 변수종류 Class Variables { int iv;//인스턴스 변수 static int cv; //클래스 변수 (static 변수, 공유변수) void method() { int lv = 0; //지역변수 } } 클래스 영역에서는 선언문만 가능하다. ( 메서드, 변수의 선언 ) 클래스안에 인스턴스변수와 static변수는 변수 선언이 되었다. void method() 라는 메서드가 선언이 되었고 그 안에는 메서드가 정의되었으며 lv는 지역변수를 뜻한다. 지역변수는 메서드 안에서만 유효하며 종료시 자동 제거된다. 인스턴스변수와 static변수는 클래스 영역에서 사용된다. 자동초기화가 되지 않으며 try-catch 구문을 사용시 try블럭이 성공되지 않으면 초기화가 안되는 상태를 유지하기 때문에 ..
배열은 동일 자료형의 데이터 묶음이며 쉽게 생성하고 사용할 수 있지만, 저장할 수 있는 객체 수가 배열을 생성할 때 결정되기 떄문에 불특정 다수의 객체를 저장하기에는 문제가 있다. 또한 자료처리에 불편함이 있다. 추가,삭제,수정 기능이 제공이 되지 않아 개발자가 직접 구현을 해야 한다. 이러한 배열의 문제점을 해결하고 객체들을 효율적으로 추가, 삭제, 검색 할 수 있도록 java.util 패키지에 컬렉션과 관련된 인터페이스와 클래스들을 포함시켜 놓았다. 이것을 총칭해서 컬렉션 프레임워크라고 부른다. 컬렉션 프레임워크: 다른 자료형도 묶음(참조형만) 이 가능하며 크기가 가변적이다. 또한 자료처리가 편리하여 추가기능, 삭제기능, 수정기능제공이 된다. List - 인덱스가 제공, 중복저장허용, 저장순서 유지 ..