728x90
□ 6장 배열, 제네릭, 컬렉션
■ 배열(Array) 클래스 : 단순 용량적인 측면에서의 데이터 저장공간
● 단순 저장공간의 문제 : 자료를 처리하는 방식, 동적인 공간의 문제, 빠른 검색의 문제
■ 배열
● 종류 : 기본 데이터 타입 배열, 객체 배열.
- 데이터 타입 배열 : 배열생성과 동시에 메모리 생성
- 객체 배열 : 객체변수의 이름만 생성되고, 메모리는 생성되지 않는다.
● 특징 : 같은 데이터 타입의 변수를 한꺼번에 여러개 생성.
● 검색 : 첨자를 통해서 배열 내에 존재하는 모든 변수를 검색
● 단점 : 배열의 크기를 변경할 수 없다.
■ 컬렉션, 맵 : 자료구조적인 측면에서의 데이터 저장공간, 배열의 발전된 구조, 인터페이스이다.
● 컬렉션 : 집합적인 저장공간
객체를 삽입 삭제하는 추상 메서드
- List : 순서있다, 중복허용boolean add(E o);
boolean remove(Object o);
데이터 확인을 위한 추상 메서드boolean isEmpty(); --- 비어있는지 확인
boolean contains(Object o); --- 특정 객체가 포함되어 잇는지 확인
int size(); --- 포함된 객체의 수를 리턴
데이터를 배열로 얻기 위한 추상 메서드boolean contains(Object o); --- 특정 객체가 포함되어 잇는지 확인
int size(); --- 포함된 객체의 수를 리턴
T[] toArray(); --- 객체들을 배열 형태로 리턴
- Set : 수학적인 집합개념, 중복허용안함
● 맵 : 검색적인 저장공간, 데이터 삽입시 Key와 Value의 형태로 삽입, Key를 이용하여 Value를 검색
Object put(Object key, Object value); --- 데이터 삽입
Object remove(Object key); --- 데이터를 제거
Object get(Object key); --- 데이터를 검색
V put(K key, V value); --- 데이터 삽입
V remove(Object key); --- 데이터 제거
V get(Object key); --- 데이터 검색
- HashMap : 키와 값을 이용해서 데이터 관리, 동기화가 보장되지 않는다.Object remove(Object key); --- 데이터를 제거
Object get(Object key); --- 데이터를 검색
V put(K key, V value); --- 데이터 삽입
V remove(Object key); --- 데이터 제거
V get(Object key); --- 데이터 검색
- Hashtable : 키와 값을 이용해서 데이터 관리, 동기화가 보장된다.
- TreeMap : Map계열이면서 검색이 가능한 클래스
● Sotred 계열 : Set과 Map인터페이스를 상속바당 정렬 기능이 추가
- SotredSet : Set 인터페이스를 상속
* TreesSet : Set계열이면서 검색이 가능한 클래스, 데이터들이 자동으로 오름차순
- SotredMap : Map 인터페이스를 상속
* TreeMap : Key, Value로 데이터 관리, Key 기준으로 오름차순
■ 배열과 컬렉션,맵의 차이점 : 배열은 크기를 동적으로 늘릴수 없다. 하지만 컬렉션이나 맵계열의 클래스는 동적으로
메모리를 확장할 수 있다
■ ArrayList와 HashSet
● 공통점 : 객체의 저장공간, 동기화 보장하지 않는다.
● ArrayList : List 인터페이스를 구현하는 클래스, 순서의 개념, 데이터 중복 허용
- Vector와 공통점 : 순서가 있는 collection, List인터페이스 구현, 데이터 중복 허용
차이점 : 자동으로 동기화
● HashSet : Set 인터페이스를 구현하는 클래스, 집합의 개념, 데이터 중복 허용하지 않음
■ 제네릭 : 클래스에 사용할 타입을 클래스를 사용할 때 지정한 후 사용하는 기술
● 자바 코드내에서 Top<String>형 클래스의 사용
Top<String> t = new Top<String>();
t.setDate(str);
String str2 = t.getData();
● 자바 컴파일러가 제네릭을 처리하는 방식t.setDate(str);
String str2 = t.getData();
Top t = new Top();
t.setData(str);
String str2 = (String)t.getData();
■ Stack : 후입선출 컬렉션 클래스t.setData(str);
String str2 = (String)t.getData();
● push() 메서드 : Stack의 맨 위에 요소를 삽입
● pop() 메서드 : Stack의 맨 위에 있는 요소를 삭제하고 데이터를 반환
● peek() 메서드 : Stack의 맨 위에 있는 요소를 제거하지 않고 반환
■ AutoBoxing : 기본 데이터 타입을 래퍼(Wrapper) 클래스형의 객체로 자동으로 변환해주는 기능
■ Enumeration과 Iterator : 컬렉션 내의 데이터에 접근하기 위한 방법
- 특징 : 모든 데이터에 접근가능
- 차이 : Itorator는 Fail-Fast방식을 지원한다
● Enumeration 메서드 : hasMoreElements() //데이터가 있는지 확인, nextElement(); //다음 위치로 이동
● Iterator 메서드 : hasNext(); //데이터가 있는지 확인, next(); //데이터를 얻어내면서 다음 위치로 이동
□ 7장 Exception, 문자열, 자바5.0
■ 문자열
● 문자상수의 집합, 이중 따음표사용, String 클래스의 객체
● length(), concat(), equals(), indexOf(), lastIndexOf(), substring(), replace()
■ StringBuffer 클래스 : 동기화를 지원한다.
● 수정이 가능한 클래스, 객체는 문자열의 추가, 삭제, 수정, 검색등의 기능을 가지고 있다.
● StringBuilder와 차이 : 동기화를 지원하지 않는다.
■ Formatting 클래스
■ 자바의 상수
● 클래스에서 상수 선언 : final 키워드를 상수를 선언, 단한번 초기화, static final로 선언하면 전역적인 상수
● 인터페이스에서의 상수선언 : 멤버변수는 상수만 가능, 멤버변수 선언하면 자동으로 public static final이 된다.
■ enum(열거형) : 열거형으로 변수를 만들어도 이 변수는 열거형을 선언할 때 명시한 값을 넣을 수 있다.
■ Varargs(가변인수) : 필요에따라 매겨변수를 가변적으로 조정할 수 있는 기술.
□ 8장 자바 Thread
■ 프로세스와 스레드 : 하나의 프로세스 내에는 여러개의 스레드가 존재할 수 있다.
● 프로세스(process) : 하나의 프로그램은 하나의 프로세스에 해당.
● 멀티 태스킹(Multi-Tasking) : 운영체제 차원의 프로세스 관리
● 스레드(Thread)
- 하나의 프로그램 내에서 실행되는 메서드
- 같은 순간에 두 개의 메서드가 동시에 실행되면 두 개의 스레드가 동작하는 것이다. ---> 시퀀셜하게 동작한다.
* 주의사항 : 우선권, 동기화(공유자원을 상대로 순서대로 작업이 이루어지는 것)
- 스레드 상태
시작 상태(Start)
동작할 수 있는 상태(Runnable) : 스레드 실행, 스레드가 여러 개 존재할 수 있다.
동작 상태(Run) : Runnable상태에서만 Run 상태가 될 수 있다, 한순간 단 하나의 스레드만 Run 상태가 된다.
대기 상태(NotRunnable) : Run 상태로 진입할 수 없음, sleep()-일정시간, wait()과 notify()-수동으로 제어
종료 상태(Dead) : 스레드의 종료
■ 동기화(synchronized) : 줄서서 순서대로 공유자원 사용하기동작할 수 있는 상태(Runnable) : 스레드 실행, 스레드가 여러 개 존재할 수 있다.
동작 상태(Run) : Runnable상태에서만 Run 상태가 될 수 있다, 한순간 단 하나의 스레드만 Run 상태가 된다.
대기 상태(NotRunnable) : Run 상태로 진입할 수 없음, sleep()-일정시간, wait()과 notify()-수동으로 제어
종료 상태(Dead) : 스레드의 종료
- 블록형태로 사용가능
■ 스트림(Stream) : 자료 입출력을 도와주는 중간 매개체
File 입력 스트림의 연결과 작업
● 스트림이란 빨대다FileInputStream fis = new FileInputStream(파일); //fis.read()를 이용해서 데이터 읽기
File 출력 스트림의 연결과 작업
FileOutputStream fos = new FileOutputStream(파일); //fos.write()를 이용해서 데이터 쓰기
■ File 클래스
- File f = new File("FileMain.java);
f.isFile() : 파일인지 아닌지 | f.isDirectory() : 디렉터리인지 아닌지 | f.isHidden() : 숨김 파일인지 |
f.lastModified() : 마지막 수정 날짜 | f.canRead() : 읽기속성가진 파일 | f.canWrite() : 쓰기속성가진 파일 |
f.getPath() : 상대 경로 | f.getAbsolutePath() : 절대 경로 | f.getName() : 디렉터리 또는 파일이름 |
f.toURL() : URL형식의 경로 | f.exists() : 파일이 존재하는지 | f.length() : 파일의 길이 |
● 파일 입출력을 위한 스트림
- 바이트 단위 : FileInputStream, FileOutputStream
- 문자 단위 : FileReader, FileWriter
● RandomAccessFile : 데이터를 랜덤하게 접근
● Memory 스트림 : 목표지점 자체가 메모리, 배열과 문자열 등
728x90
'자바' 카테고리의 다른 글
소설같은 자바 훑어보기 3권!! (0) | 2010.02.22 |
---|---|
소설같은 자바 훑어보기 1권!! (0) | 2010.02.18 |