본문 바로가기

반응형

자바공부

(75)
문자 스트림과 파일 입출력 * 문자 스트림은 2바이트의 유니코드 문자를 단위로 입출력하는 스트림이다. 문자화되지 않는 바이너리 바이트 값들은 문자 스트림 클래스에서 처리할 수 없다. 따라서 이미지오 ㅏ같은 바이너리 정보는 처리할 수 없다. 문자 입력 스트림은 바이트들을 전달받고, 이 바이트들을 '로컬 문자 집합'에 있는 문자인지 비교하여 문자로 변환한다. * FileReader를 이용한 텍스트 파일 읽기 * FileReader의 생성자 생성자 설명 FileReader(File file) file로부터 읽는 FileReader 생성 FIleReader(String name) name 이름의 파일로부터 읽는 FileReader 생성 * FileReader, Reader, InputStreamReader의 공통 주요 메소드 메소드 설명..
스트림 입출력 Stream, 명품 자바 프로그래밍 8장 * 컴퓨터 공학에서 스트림(Stream)은 연속적인 데이터의 흐름 혹은 데이터를 전송하는 소프트웨어 모듈을 일컫는다. 자바에서 입출력 스트림은 응요프로그램과 입출력 장치를 연결하는 소프트웨어 모듈이다. 응용프로그램은 출력 입력 스트림과 연결하며, 입력 스트림은 키보드 장치를 제어하여 사용자의 키 입력을 받아 으용프로그램에게 전달한다. 또한 응용프로그램은 출력 스트림에 전결하고 출력 스트림에 출력하면, 출력 스트림은 다른 끝단에 연결된 출력 장치를 제어하여 출력을 완성한다. 스트림 입출력 방식에서, 자바 응용프로그램은 입출력 장치를 직접 제어하는 대신, 입출력 스틀미 객체와 연결하여 쉽게 데이터 입출력을 실핸한다. 스트림을 사용하지 않고 자바 응용프로그램이 입출력 장치를 직접 제어하는 코드를 작성하여 입출..
제네릭 클래스 만들기, 명품 자바 프로그래밍 7장 * 제네릭 클래스를 작성하는 방법은 기존의 클래스 작성 방법과 유사한데, 클래스 이름 다음에 일반화된 타입(generic type)의 매개변수를 사이에 추가한다는 차이가 있다. 간단한 제네릭 클래스를 작성해보자. 1) 제네릭 클래스 작성 타입 매개변수 T를 가진 제네릭 클래스 MyClass public class MyClass { // 제네릭 클래스 Myclass, 타입 매개변수 T T val; // 변수 val의 타입은 T void set(T a){ val = a; // T 타입의 값 a를 val에 지정 } T get(){ return val; // T 타입의 값 val 리턴 } } 2) 제네릭 클래스에 대한 레퍼런스 변수 선언 제네릭 클래스의 레퍼런스 변수를 선언할 때는 타입 매개변수에 구체적인 타입..
LinkedList, Collections 클래스 활용, 자바 명품 프로그래밍 7장 * LinkedList는 요소들을 양방향으로 연결하여 관리한다는 점을 제외하고 Vector, ArrayList와 거의 같다. LinkedList는 맨 앞과 맨 뒤를 가리키는 head, tail 레퍼런스를 가지고 있어, 맨 앞이나 맨 뒤, 중간에 요소의 삽입이 가능하며 인덱스를 이용하여 요소에 접근할 수 도 있다. * Collections 클래스는 유용한 여러 메소드를 지원한다. sort() - 컬렉션에 포함된 요소들의 정렬 reverse() - 요소를 반대 순으로 정렬 max(), min() - 요소들의 최댓값과 최솟값 찾아내기 binarySearch() - 이진 검색 Collections 클래스의 메소드는 모두 static 타입이므로 Collections 객체를 생성할 필요는 없다. * Collecti..
HashMap, 자바 명품 프로그래밍 7장 * HashMap 컬렉션은 java.util.HashMap의 경로에 있다. '키(Key)'와 '값(Value)'의 쌍으로 구성되는 요소를 다룬다. K는 '키'로 사용할 데이터 타입, V는 '값'으로 사용할 데이터 타입의 타입매개변수이다. 해시맵은 내부에 '키'와 '값'을 저장하는 자료 구조를 가지고, put(), get() 메소드를 이용하여 요소를 삽입하거나 검색한다. HashMap h = new HashMap(); // 해시맵 생성 h.put("apple", "사과"); // "apple" 키와 "사과" 값의 쌍을 h에 삽입 String kor = h.get("apple"); // "apple" 키로 값 검색. kor는 검색된 값, "사과" * 해시맵의 장단점 장점) 1. 요소의 삽입, 삭제 시간이 매..
Iterator 순차 검색, 명품 자바 프로그래밍 7장 * java.util 패키지의 Iterator 인터페이스는 Vector, ArrayList, LinkedList, Set과 같이 요소가 순서대로 저장된 컬렉션에서 요소를 순차 검색할 때 사용하면 편리하다. * 벡터 v의 iterator()를 호출하여, 벡터 v의 각 요소를 순차적으로 검색할 수 있는 Iterator 객체를 얻어낸다. 이때 Iterator 객체를 반복자라고 부른다. Iterator It = v.iterator(); // 벡터 v의 요소를 순차 검색할 Iterator 객체 리턴 * it로 v의 각 요소들을 순차 방문하는 코드이며, 처음 it.next()는 v의 첫 번째 요소를 리턴하고, it는 다음 요소를 가리킨다. while(it.hasNext()) { // it로 벡터의 끝까지 반복 in..
컬렉션 Vector의 활용, 명품 자바 프로그래밍 7장 * Vector (벡터라고 부른다.)는 배열을 가변 크기로 다룰 수 있게 하고, 객체의 삽입, 삭제, 이동이 쉽도록 구성한 컬렉션 클래스이다. 벡터는 삽입되는 요소의 개수에 따라 자동으로 크기를 조절하고, 요소의 삽입과 삭제에 따라 자동으로 요소들의 자리를 이동한다. 생성 ) Vector v = new Vector(); // 정수값만 사용하는 벡터 생성 레퍼런스 변수 선언과 벡터 생성을 분리하여 코드를 만들 수 있다. Vector stringVector; // 제네릭 컬렉션에 대한 레퍼런스 변수 선언 StringVector = new Vector(); // 문자열 벡터 생성 * Vector 클래스의 주요 메소드 메소드 설명 boolean add(E element) 벡터의 맨 뒤에 element 추가 vo..
ArrayList<E>, 자바 명품 프로그래밍 7장 * ArrayList는 가변 크기의 배열을 구현한 컬렉션 클래스이다. 경로명: java.util.ArrayList Vector 클래스와 거의 동일하지만 차이점 ArrayList는 스레드간 동기화를 지원하지 않는다. 다수의 스레드가 동시에 ArrayList에 요소를 삽입하거나 삭제할 때 ArrayList의 데이터가 훼손될 우려가 있다. 하지만 멀티스레드 동기화를 위한 시간 소모가 없기 때문에, ArrayList는 Vector보다 속도가 빨르다. 단일 스레드 응용에는 ArrayList가 더 효과적이다. 메소드 설명 boolean add(E element) ArrayList의 맨 뒤에 element 추가 void add(int index, E element) 인덱스 index 위치에 element 삽입 boo..

반응형