//선언
1. 타입[] 배열이름;
2. 타입 배열이름[];
//생성
배열이름 = new 타입[배열길이];
타입[] 배열이름 = new 타입[배열길이];
//예제
int[] grade1 = new int[3]; // 길이가 3인 int형 배열의 선언 및 생성
int[] grade2 = new int[3]; // 길이가 3인 int형 배열의 선언 및 생성
grade1[0] = 85; // 인덱스를 이용한 배열의 초기화
grade1[1] = 65;
grade1[2] = 90;
grade2[0] = 85; // 배열의 길이보다 적은 수의 배열 요소만 초기화
for (int i = 0; i < grade1.length; i++) {
System.out.print(grade1[i] + " "); // 인덱스를 이용한 배열로의 접근
}
for (int i = 0; i < grade2.length; i++) {
System.out.print(grade2[i] + " "); // 인덱스를 이용한 배열로의 접근
}
//실행결과
85 65 90
85 0 0
자바에서는 변수와 마찬가지로 선언과 동시에 초기화가 가능하다
//문법
1. 타입[] 배열이름 = {배열요소1, 배열요소2, ...};
2. 타입[] 배열이름 = new 타입[]{배열요소1, 배열요소2, ...};
2차원 배열이란 배열의 요소로 1차원 배열을 가지는 배열이다. 자바에서는 2차원 배열을 나타내는 타입을 따로 제공하지는 않고 있다. 대신에 1차원 배열의 배열요소로 또 다른 1차원 배열을 사용하여 2차원 배열을 나타낼 수 있다.
//문법
1. 타입[][] 배열이름;
2. 타입 배열이름[][];
3. 타입[] 배열이름[];
타입 배열이름[행의길이][열의길이] = {
{배열요소[0][0], 배열요소[0][1], ...},
{배열요소[1][0], 배열요소[1][1], ...},
{배열요소[2][0], 배열요소[2][1], ...},
...
};
//예제
int[][] arr = {
{10, 20, 30},
{40, 50, 60}
};
//결과
10 20 30
40 50 60
//사용방법
배열선언 = Arrays.copyOf(복사할배열, 범위);
//예제
int[] arr = {1,2,3,4,5};
int[] newArr = Arrays.copyOf(arr, 5);
System.out.println(Arrays.toString(newArr));
//결과
[1,2,3,4,5]
//사용방법
배열선언 = Arrays.copyOfRange(복사할배열, 시작, 끝)
//예제
int[] newArray2 = Arrays.copyOfRange(arr, 2, 5);
System.out.println(Arrays.toString(newArray2));
//결과
[3,4,5]
//기본형
Arrays.fill(배열, 바꿀값);
//예제
arr = [1,2,3,4,5]
Arrays.fill(arr, 10);
System.out.println(Arrays.toString(arr));
//결과
[10,10,10,10,10]
//예제2
int[] arr2 = new int[5];
arr2[0] = 1;
arr2[1] = 2;
arr2[2] = 3;
Arrays.fill(arr2, 3, arr2.length, 100);
System.out.println(Arrays.toString(arr2));
//결과
[1,2,3,100,100]
ArrayList 클래스는 배열을 이용하기 때문에 인덱스를 이용해 배열 요소에 빠르게 접근이 가능하다. 하지만 배열은 크기를 변경할 수 없는 인스턴스이므로, 크기를 늘리기 위해서는 새로운 배열을 생성하고 기존의 요소들을 옮겨야 하는 복잡한 과정을 거치게 된다.
물론 이 과정은 자동으로 수행되지만, 요소의 추가 및 삭제 작업에 걸리는 시간이 매우 길어지게 되는 단점을 가진다.
//기본 capacity는 10
1. ArrayList<String> a1 = new ArrayList<String>();
// 초기 capacity를 50으로 설정
2. ArrayList<String> a2 = new ArrayList<String>(50);
// 다른 컬렉션(a1)의 데이터를 초기값으로 설정
3. ArrayList<String> a3 = new ArrayList<String>(a1);
ArrayList<String> list = new ArrayList<>();
add(element)
: ArrayList 맨 뒤에 element 추가list.add("Google");
System.out.println(list);
//결과
["Google"]
add(index, element)
: index 위치에 element 삽입list.add(0, "Amazon");
System.out.println(list);
//결과
["Amazon","Google"]
addAll(ArrayList)
: ArrayList 뒤에 ArrayList 추가ArrayList<String> list2 = new ArrayList<>();
list2.add("Apple");
list2.add("Samsung");
list.addAll(list2);
System.out.println(list);
//결과
[Amazon, Google, Apple, Samsung]
size()
: ArrayList의 길이 리턴System.out.println(list.size());
//결과
4
System.out.println(list.contains("Apple"));
//결과
true
get(index)
: index에 해당하는 요소 리턴System.out.println(list.get(0));
//결과
Amazon
list.set(2, "Hyundai");
System.out.println(list);
//결과
[Amazon, Google, Hyundai, Samsung]
indexOf(params)
: params와 같은 첫 번째 요소의 index 리턴, 없으면 -1리턴System.out.println(list.indexOf("Google"));
//결과
1
remove(index)
: index의 요소 삭제System.out.println(list);
[Amazon, Google, Hyundai]
//결과
clear()
: 모든 요소 삭제list.clear();
System.out.println(list);
//결과
[]
try {
예외를 처리하길 원하는 실행 코드;
} catch (e1) {
e1 예외가 발생할 경우에 실행될 코드;
} catch (e2) {
e2 예외가 발생할 경우에 실행될 코드;
}
...
finally {
예외 발생 여부와 상관없이 무조건 실행될 코드;
}
try
: 기본적으로 맨 먼저 실행되는 코드로 여기에서 발생하는 예외는 catch 블록에서 처리된다.catch
: try에서 발생한 예외코드나 예외 객체를 인수로 받아 그 처리를 담당한다.finally
: try에서 예외가 발생하건 안 하건 맨 마지막에 무족너 실행된다.클래스 | 설명 |
---|---|
ArithmeticException | 어떤 수를 0으로 나눌때 발생 |
NullPointerException | Null 객체를 참조할 때 발생 |
ClassCastException | 적절치 못하게 클래스를 형 변환하는 경우 발생 |
NeagtiveArraySizeException | 배열의 크기가 음수 값인 경우 |
OutOfMemoryException | 사용 가능한 메모리가 없는 경우 |
NoClassDefFoundException | 원하는 클래스를 찾지 못하였을 경우 |
ArrayIndexOutOfBoundsException | 배열을 참조하는 인덱스가 잘못된 경우 |
메서드 | 설명 |
---|---|
printStackTrace() | 예외 정보를 콘솔에 출력 |
getMessage() | 예외 메세지를 반환 |
getCause() | 예외 원인을 반환 |
getStackTrace() | 예외의 스택 트레이스를 배열로 반환 |