: 여러 상수들을 편리하게 선언하기 위한, 연관된 상수들의 집합
enum 열거형이름 {상수명1, 상수명2, ...} // 상수값은 자동으로 0부터 할당됨
public static final int SPRING = 1;
public static final int SUMMER = 2;
public static final int DJANGO = 1;
public static final int SPRING = 2; // 계절 상수 이름과 중복, 컴파일 에러
enum Seasons {SPRING, SUMMER}
enum Frameworks {DJANGO, SPRING}
리턴 타입 | 메서드 | 설명 |
---|---|---|
String | name() | 열거 객체의 문자열(상수 이름)을 리턴 |
int | ordinal() | 열거 객체의 순번(0부터 시작)을 리턴 |
int | compareTo(비교값) | 입력받은 값과의 순번 차이를 리턴 |
열거 타입 | valueOf(String name) | 입력받은 문자열의 열거 객체를 리턴 |
열거 배열 | values() | 모든 열거 객체를 배열로 리턴 |
: 타입을 구체적으로 지정하지 않고, 추후에 지정할 수 있도록 해두는 것
: 클래스 명 뒤에 처럼 꺽쇠 안에 타입 매개변수를 작성함으로써 클래스 내부에서 타입 매개변수 T를 선언 가능
class Basket<T> {
private T item;
// static T item2; 클래스 변수는 사용 불가
}
class Main {
public static void main(String[] args) {
Basket<Integer> basket1 = new Basket<Integer>(1);
Basket<String> basket2 = new Basket<String>("abcd");
}
}
interface Plant {...}
class Flower implements Plant {...}
class Rose extends Flower implements Plant {...}
class Basket<T extends Plant> { // 꺽쇠 안 extends로 제네릭 타입의 범위를 제한 가능
private T item;
// static T item2; 클래스 변수는 사용 불가
}
class Main {
public static void main(String[] args) {
Basket<Flower> basket1 = new Basket<>();
Basket<Rose> basket2 = new Basket<>();
}
}
: 메서드 반환타입 앞에 처럼 꺽쇠 안에 타입 매개변수를 작성함으로써 메서드 내에서 타입 매개변수 사용가능
class Basket {
...
public <T> void add(T element) {
...
}
static <T> void setPrice(T element) { // 제네릭 메서드는 static 메서드로도 사용가능
...
}
}
class Main{
public static void main(String[] args){
Basket<String> basket = new Basket<>();
basket.add(10);
basket.add("abc");
}
}
: 예기치 못한 에러에 대응하는 코드를 미리 작성해 프로그램의 비정상 종료를 방지하고, 정상적인 실행 상태를 유지하기 위한 것
try {
// 예외가 발생할 가능성이 있는 코드
}
catch (예외타입 e){
// 예외타입의 예외가 발생했을 때 실행할 코드
}
finally {
// 예외 발생 여부와 상관없이 무조건 실행할 코드
}
: 예외를 호출한 곳으로 예외를 넘기기 위한 구문
반환타입 메서드명(매개변수) throws 예외클래스1, ... {
...
}
void throwsException() throws NullPointerException {
...
}
컬렉션이란, 여러 데이터를 그룹으로 묶어놓은 것을 의미한다. 이러한 컬렉션을 편리하게 다루기 위한 메서드들을 정의해놓은 것을 컬렉션 프레임워크라 한다.
: 배열처럼 객체를 일렬로 늘어놓고, 객체를 인덱스로 관리하는 구조
기능 | 리턴 타입 | 메서드 | 설명 |
---|---|---|---|
객체 추가 | void | add(int index, Object element) | 주어진 인덱스에 객체 추가 |
객체 추가 | boolean | addAll(int index, Collection c) | 주어진 인덱스에 컬렉션 추가 |
객체 추가 | Object | set(int index, Object element) | 주어진 인덱스에 객체 저장 |
객체 검색 | Object | get(int index) | 주어진 인덱스에 저장된 객체를 반환 |
객체 검색 | int | indexOf(Object o), lastIndexOf(Object o) | 순방향, 역방향으로 탐색해 객체 위치 반환 |
객체 검색 | ListIterator | listIterator(), listIterator(int index) | List의 객체를 탐색할 수 있는, 객체를 인덱스부터 탐색할 수 있는 ListIterator 반환 |
객체 검색 | List | subList(int fromIndex, int toIndex) | fromIndex부터 toIndex에 있는 객체 반환 |
객체 삭제 | Object | remove(int index) | 주어진 인덱스에 저장된 객체를 삭제 후 삭제된 객체 반환 |
객체 삭제 | boolean | remove(Object o) | 주어진 객체를 삭제 |
객체 정렬 | void | sort(Comparator c) | 주어진 비교자(comparator)로 List 정렬 |
: 요소의 중복을 허용하지 않고, 저장 순서를 유지하지 않는 구조
기능 | 리턴 타입 | 메서드 | 설명 |
---|---|---|---|
객체 추가 | boolean | add(Object o) | 주어진 객체를 추가하고, 성공 여부 리턴 |
객체 검색 | boolean | contains(Object o) | 주어진 객체가 존재하는지 확인 |
객체 검색 | boolean | isEmpty() | Set이 비어있는지 확인 |
객체 검색 | Iterator | Iterator() | 저장된 객체를 하나씩 읽어오는 반복자 리턴 |
객체 검색 | int | size() | 저장된 전체 객체 수 리턴 |
객체 삭제 | void | clear() | Set에 저장된 모든 객체 삭제 |
객체 삭제 | boolean | remove(Object o) | 주어진 객체 삭제 |
: 키와 값으로 구성된 Entry 객체를 저장하는 구조. 키는 중복값 불가, 값은 중복 가능.
기능 | 리턴 타입 | 메서드 | 설명 |
---|---|---|---|
객체 추가 | Object | put(Object key, Object value) | 주어진 키로 값을 저장. 새로운 키라면 null 리턴, 기존 키라면 새로운 값으로 대체하고 기존 값을 리턴 |
객체 검색 | boolean | containsKey(Object key) | 주어진 키가 있으면 true, 없으면 false 리턴 |
객체 검색 | boolean | containsValue(Object value) | 주어진 값이 있으면 true, 없으면 false 리턴 |
객체 검색 | Set | entrySet() | 키와 값의 쌍으로 구성된 모든 Entry 객체를 Set에 담아서 리턴 |
객체 검색 | Object | get(Object key) | 주어진 키에 해당하는 값 리턴 |
객체 검색 | boolean | isEmpty() | 컬렉션이 비어있는지 확인 |
객체 검색 | Set | keySet() | 모든 키를 Set 객체에 담아 리턴 |
객체 검색 | int | size() | 저장된 전체 Entry 객체 수 리턴 |
객체 검색 | Collection | values() | 저장된 모든 값을 컬렉션에 담아 리턴 |
객체 삭제 | void | clear() | 모든 Entry 삭제 |
객체 삭제 | Object | remove(Object key) | 주어진 키와 일치하는 Entry 삭제하고 값 리턴 |