자바 API란 자바에서 기본적으로 제공하는 라이브러리(library)다. 프로그램 개발에 자주 사용되는 클래스 및 인터페이스의 모음이다. API 도큐먼트는 쉽게 API를 찾아 이용할 수 있도록 문서화한 것이다. HTML 페이지로 작성되어 있어 웹 브라우저에서 바로 볼 수 있다.
java.lang 패키지는 자바 프로그램의 기본적인 클래스를 담은 패키지이다. 포함된 클래스와 인터페이스는 import 없이 사용이 가능하다.
주요클래스
클래스 | 용도 |
---|---|
Object | - 자바 클래스의 최상위 클래스로 사용 |
System | - 표준 입렵장치(키보드)로부터 데이터를 입력 받을 때 사용 - 표준 출력장치(모니터)로 출력하기 위해 사용 - 자바 가상 머신을 종료시킬 때 사용 - 쓰레기 수집기를 실행 요청할 때 사용 |
Class | - 클래스를 메모리로 로딩할 때 사용 |
String | - 문자열을 저장하고 여러가지 정보를 얻을 때 사용 |
StringBuffer, StringBuilder | - 문자열을 저장하고 내부 문자열을 조작할 때 사용 |
Math | - 수학 함수를 이용할 때 사용 |
Wrapper:Byte, Short, Character, Integer, Float, Double, Boolean | - 기본 타입의 데이터를 갖는 객체를 만들 때 사용 - 문자열을 기본 타입으로 변환할 때 사용 - 입력값 검사에 사용 |
컬렉션 프레임워크는 객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 제공되는 컬렉션 라이브러리이다. java.util 패키지에 포함되며 인터페이스를 통해서 정형화된 방법으로 다양한 컬렉션 클래스를 이용한다.
컬렉션 프레임워크의 주요 인터페이스는 List
, Set
, Map
이다.
인터페이스 분류 | 특징 | 구현 클래스 |
---|---|---|
List 계열 | - 순서를 유지하고 저장 - 중복 저장 가능 | ArrayList, Vector, LinkedList |
Set 계열 | - 순서를 유지하지 않고 저장 - 중복 저장 불가능 | HashSet, TreeSet, LinkedHashSet |
Map 계열 | - 키와 값의 쌍으로 저장 - 키는 중복 저장 불가능, 값은 가능 | HashMap, Hashtable, TreeMap, Properties |
List 컬렉션은 인덱스로 관리하고 중복해서 객체 저장이 가능하다는 특징이 있다.
↓주요 메소드
기능 | 메소드 | 설명 |
---|---|---|
객체 추가 | boolean add(E e) | 주어진 객체를 맨 끝에 추가 |
void add(int index, E element) | 주어진 인덱스에 객체를 추가 | |
set(int index, E element) | 주어진 인덱스에 저장된 객체를 주어진 객체로 바꿈 | |
객체 검색 | boolean contains(Object o) | 주어진 객체가 저장되어 있는지 여부 |
E get(int index) | 주어진 인덱스에 저장된 객체를 리턴 | |
isEmpty() | 컬렉션이 비어있는지 조사 | |
int size() | 저장되어있는 전체 객체수를 리턴 | |
객체 삭제 | boolean remove(Object o) | 주어진 객체를 삭제 |
📖ArrayList
List<E> list = new ArrayList<E>();
E는 타입파라미터
ArrayList의 저장용량은 초기에는 10(따로 지정 가능)이고, 저장 용량을 초과한 객체들이 들어오면 자동으로 늘어난다. 고정도 가능하다. 객체 제거 시에는 바로 뒤 인덱스부터 마지막 인덱스까지 모두 앞으로 1씩 당겨진다.
📖Vector
List<E> list = new Vector<E>();
Vector는 스레드 동기화(synchronization), 복수의 스레드가 동시에 Vector에 접근해 객체를 추가, 삭제하더라도 스레드에 안전하다.
📖LinkedList
List<E> list = new LinkedList<E>();
인접 참조를 링크해서 체인처럼 관리한다. 특정 인덱스에서 객체를 제거하거나 추가하게 되면 바로 앞뒤 링크만 변경한다. 빈번한 객체 삭제와 삽입이 일어나는 곳에서는 ArrayList보다 좋은 성능이다.
Set 컬렉션은 수학의 집합에 비유한다. 저장 순서가 유지되지 않고 객체를 중봅 저장할 수 없다. 하나의 null만 저장이 가능하다. Set은 인덱스로 객체를 검색해서 가져오는 메소드는 없다. 전체 객체 대상으로 한 번씩 반복해 가져오는 반복자(Iterator)를 제공한다.
↓주요 메소드
기능 | 메소드 | 설명 |
---|---|---|
객체 추가 | boolean add(E e) | 주어진 객체를 저장, 객체가 성공적으로 저장되면 true를 리턴하고 중복 객체면 false를 리턴 |
객체 검색 | boolean contains(Object o) | 주어진 객체가 저장되어 있는지 여부 |
isEmpty() | 컬렉션이 비어 있는지 조사 | |
Iterator<E > iterator() | 저장된 객체를 한번씩 가져오는 반복자 리턴 | |
int size() | 저장되어있는 전체 객체수 리턴 | |
객체 삭제 | void clear() | 저장된 모든 객체를 삭제 |
boolean remove(Object o) | 주어진 객체를 삭체 |
📖HashSet
Set<E> set = new HashSet<E>();
동일 객체 및 동등 객체는 중복 저장하지 않는다.
키(key)와 값(value)으로 구성된 Map.Entry 객체를 저장하는 구조이다. 키와 값은 모두 객체이고 키는 중복될 수 없지만 값은 중복 저장이 가능하다.
↓ 주요 메소드
기능 | 메소드 | 설명 |
---|---|---|
객체 추가 | V put(K key, V value) | 주어진 키와 값을 추가, 저장이 되면 값을 리턴 |
객체 검색 | boolean containsKey(Object key) | 주어진 키가 있는지 여부 |
boolean containsValue(Object value) | 주어진 값이 있는지 여부 | |
Set<Map.Entry<K,V>> entrySet() | 키와 값의 쌍으로 구성된 모든 Map.Entry 객체를 Set에 담아서 리턴 | |
V get(Object key) | 주어진 키의 값을 리턴 | |
boolean isEmpty() | 컬렉션이 비어있는지 여부 | |
Set<K > keySet() | 모든 키를 Set 객체에 담아서 리턴 | |
int size() | 저장된 키의 총 수를 리턴 | |
Collection<V > values() | 저장된 모든 값 Collection 에 담아서 리턴 | |
객체 삭제 | void clear() | 모든 Map.Entry(키의 값)를 삭제 |
V remove(Object key) | 주어진 키와 일치하는 Map.Entry 삭제, 삭제가 되면 값을 리턴 |
📖HashMap
키 객체는 hashCode()와 equals()를 재정의해 동등 객체가 될 조건을 정해야 한다. 키 타입은 String을 많이 사용한다. String은 문자열이 같은 경우 동등 객체가 될 수 있도록 hashCode()와 equals() 메소드가 재정의되어 있기 때문이다.
📖Hashtable
Hashtable은 스레드 동기화(synchronization)가 된 상태이다. 복수의 스레드가 동시에 Hashtable에 접근해서 객체를 추가, 삭제하더라도 스레드에 안전하다.
📖Properties
키와 값을 String 타입으로 제한한 Map 컬렉션이다. Properties는 *프로퍼티(.properties) 파일을 읽어들일 때 주로 사용한다.
*프로퍼티 파일
- 옵션 정보, 데이터베이스 연결 정보, 국제화(다국어) 정보를 기록하여 텍스트 파일로 활용한다.
- 애플리케이션에서 주로 변경이 잦은 문자열을 저장하여 유지 보수를 편리하게 만들어 준다.
- 키와 값이 = 기호로 연결되어 있는 텍스트 파일로 ISO 8859-1 문자셋으로 저장한다. 한글은 유니코드(Unicode)로 변환되어 저장된다.
object 클래스는 자바의 최상의 부모 클래스이다. 다른 클래스를 상속하지 않으면 java.lang.Object 클래스 상속을 암시한다. Object 메소드는 모든 클래스에서 사용 가능하다.
equals() 메소드는 기본적으로 == 연산자와 동일한 결과를 리턴한다.(번지를 비교함)
논리적 동등을 위해 오버라이딩이 필요하다. 논리적 동등이란 같은 객체이건 다른 객체이건 상관없이 객체 저장 데이터가 동일한 것이다. Object의 equals() 메소드는 재정의하여 논리적 동등 비교할 때 이용한다.
객체 해시코드란 객체를 식별할 하나의 정수값이다. 객체의 메모리 번지를 이용해 해시코드를 만들어 리턴한다. 개별 객체는 해시코드가 모두 다르다. 논리적 동등 비교 시 hashCode() 메소드를 오버라이딩 할 필요성이 있다. 컬렉션 프레임워크의 HashSet, HashMap, Hashtable과 같은 클래스는 두 객체가 동등한 객체인지 판단할 때 아래와 같은 과정을 거친다.
(교재 : 이것이 자바다 저자 : 신용권)