티스토리 뷰
반응형
1. 배열 (Array)
- 배열은 인덱스와 인덱스에 대응하는 데이터들로 이루어진 연속적인 자료구조이다.
- 만약 위 그림 (1)처럼 1부터 10까지 숫자 중 홀수의 값을 저장하고자 할 때 서로 다른 변수의 이름을 만든다면 코드 또한 길고 지저분할 것이다.
그러나 (2)와 같이 배열을 사용하면 간단히 5개의 정수 공간을 가진 배열을 생성할 수 있다.
배열 선언 및 생성
(1) 레퍼런스 변수 선언
int Array[];
또는
int [] Array;
- 이 선언만으로 배열 공간이 할당되지 않으며, 레퍼런스 변수 Array만 생성된다.
- Array는 배열 공간에 대한 주소 값만 가지며 배열은 아니다.
(2) 배열 생성
Array = new int[5];
- 배열 생성은 데이터를 저장할 배열 공간을 할당 받는 과정이다.
- 이때 new 연산자를 통해 배열을 생성하며 [ ] 안에 생성할 원소의 개수를 지정한다.
- 즉, 배열의 길이는 고정되어 있다.
배열 선언과 동시에 생성
- 배열 선언과 동시에 생성할 경우 아래와 같이 사용한다.
int Array[] = new int[5];
- 배열의 길이를 설정하지 않은 경우 컴파일 오류가 발생한다.
String[] week = new String[]; // 배열의 크기 값이 없으므로 컴파일 오류가 발생한다.
배열 초기화
- 배열 선언문에서 { } 에 원소를 나열하면 초기화된 배열을 만들 수 있다.
- 배열의 크기는 { }에 나열된 값의 개수로 정해진다.
int Array[] = {1, 3, 5, 7, 9};
배열의 값은 어떻게 접근할까?
- 배열의 인덱스는 0부터 시작하며 정수만 가능하다.
- 마지막 원소의 인덱스는 (배열크기 -1) 이다.
int Array[] = new int[5]; //원소 5개인 배열 생성
Array[0] = 5; // 원소 0에 5 저장
Array[2] = 6; // 원소 2에 6 저장
Array[4] = 2; // 마지막원소. 원소 4에 2 저장
- 인덱스로 음수를 사용하면 실행오류가 발생한다.
public class Ex01 {
public static void main(String[] args) {
int Array[] = {1,3,5,7,9};
System.out.println(Array[-2]); //인덱스로 음수 사용 불가 ArrayIndexOutOfBoundsException 오류가 발생
}
}
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index -2 out of bounds for length 5 at Ex01.main(Ex01.java:7)
- 배열의 범위를 넘어서면 실행오류가 발생한다.
public class Ex01 {
public static void main(String[] args) {
int Array[] = {1,3,5,7,9};
System.out.println(Array[5]); //5는 인덱스의 범위(0~4)를 넘었음 ArrayIndexOutOfBoundsException 오류가 발생
}
}
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5 at Ex01.main(Ex01.java:7)
레퍼런스 치환과 배열 공유
- 자바에서는 레퍼런스 변수와 배열공간이 분리되어 있기 때문에 배열공유가 쉽게 이루어진다.
int Array[] = new int[5];
int reArray[] = Array; //레퍼런스 치환. reArray는 Array와 동일한 배열참조
- reArray는 Array 배열을 복사하는 것이 아니라 Array와 동일한 레퍼런스 값을 가지게 되는 것이다.
- reArray로 Array의 배열원소를 마음대로 접근할 수 있다.
배열의 크기
- length를 이용하면 배열의 크기를 알아낼 수 있다.
int Array[] = new int[5];
int size = Array.length; //size는 5
- (반복문에서 사용) 배열의 크기만큼 반복할 때 length를 사용하면 유용하다.
public class Ex02 {
public static void main(String[] args) {
String[] weeks = {"월", "화", "수", "목", "금", "토", "일"};
for (int i = 0; i < weeks.length; i++) {
System.out.println(weeks[i]);
}
}
}
2. 다차원배열
2차원 배열
int Array = new int[2][5]; // 2행 5열의 2차원 배열 생성
- 2차원 배열을 선언할 때 각 원소를 초기화할 수 있고, 원소 개수만큼 배열공간이 할당된다.
int array[][] = {{0,1,2}, {3,4,5}, {6,7,8}}; // 3×3 배열 생성
반응형
'JAVA' 카테고리의 다른 글
[Java] 객체지향 프로그래밍(OOP) (0) | 2022.03.21 |
---|---|
[Java] 리스트 (List, ArrayList) (0) | 2022.03.15 |
[Java] 반복문(for문, while문, do-while문) (0) | 2022.03.12 |
[Java] 조건문(if문, if-else, switch-case) (0) | 2022.03.11 |
[Java] 연산자 및 연산자 우선순위 (0) | 2022.03.09 |
댓글
반응형
공지사항