같은 자료형을 여러개 묶어 사용하는 것을 배열이라고 한다.
1차원 배열은 다음과 같이 구성된다.
각 원소의 접근하려면 []연산자를 사용하는데 항상 배열의 시작은 0임을 명심해야한다.
ex.) int[] mat = new int[7];
- 첫번째 원소를 사용 : mat[0]
- 두번째 원소를 사용 : mat[1]
- 세번째 원소를 사용 : mat[2]
- n번째 원소를 사용 : mat[n-1]
2차원 배열은 다음과 같이 구성된다.
2차원 배열은 []연산자 2개를 이용하여 접근한다. 앞에 []는 행의 번호, 뒤에 []는 열의 번호가 들어간다.
각 행은 다른 크기의 배열을 지정할 수 있다.
2차원 배열 역시 원소의 시작은 0이다.
ex.) int[][] mat = new int[3][2];
- 1행 1열의 원소를 사용 : mat[0][0]
- 2행 1열의 원소를 사용 : mat[1][0]
- 3행 2열의 원소를 사용 : mat[2][1]
- n행 m열의 원소를 사용 : mat[n-1][m-1]
레퍼런스는 여러가지 다른 이름으로 하나의 배열을 사용하는 방법이다.
레퍼런스를 이용하면 각각 다른 이름으로 배열의 값을 바꾸거나 배열의 값을 추출할 수 있다.
ex.) int[] mat = new int[6];
arr = mat;
order = arr;
- mat[n] 의값 을 하면 arr[n]과 order[n]의 값 모두 달라진다.
예제는 다음과 같다.
public class Array {
public static void main(String[] args) {
//배열의 선언
int[] arr = {1, 2, 3, 4, 5}; //크기는 5, 인덱스는 0 ~ 4, 원소 초기화O
int[] iArr = new int[5]; //크기가 5인 배열 선언, 원소 초기화X
for(int i = 0; i < 5; i++) {
iArr[i] = i + 100;
System.out.println(arr[i] + ", " + iArr[i]);
}
System.out.println();
int[][] iArrs = new int[3][]; //3개의 배열을 선언하고 각 배열은 n개의 배열을 가리킨다.
iArrs[0] = new int[2]; //0번째 방은 2개를 가리킨다.
iArrs[1] = new int[3]; //1번째 방은 3개를 가리킨다.
iArrs[2] = new int[2]; //2번째 방은 2개를 가리킨다.
int[][] arrs= new int[3][2]; //3개의 배열을 선언하고 각 배열은 2개의 방을 가리킨다.
arrs[0][0] = 1;
arrs[0][1] = 2;
arrs[1][0] = 3;
arrs[1][1] = 4;
arrs[2][0] = 5;
arrs[2][1] = 6;
for(int i = 0; i < 3; i++) {
for(int j = 0; j < iArrs[i].length;j++) {
iArrs[i][j] = (i + j) * 10 + 1;
System.out.print(iArrs[i][j] + " ");
}
System.out.println();
}
System.out.println();
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 2; j++) {
System.out.print(arrs[i][j] + " ");
}
System.out.println();
}
System.out.println();
int[] iArrsub = iArr; //iArrsub와 iArr은 같은 곳을 가리킨다.
for(int i = 0; i<iArr.length;i++) {
System.out.println(iArr[i] + ", " + iArrsub[i]);
}
System.out.println();
for(int i = 0; i < iArrsub.length;i++) {
iArrsub[i] = iArrsub[i] + 10; //iArrsub를 이용하여 iArr의 값을 변경한다.
System.out.println(iArr[i] + " , " + iArrsub[i]);
}
System.out.println();
}
}
'자바' 카테고리의 다른 글
7. 절차지향 프로그래밍과 함수 그리고 객체지향2 (0) | 2019.07.15 |
---|---|
6. 절차지향 프로그래밍과 함수 그리고 객체지향1 (0) | 2019.07.07 |
4. 제어문과 반복문 (0) | 2019.06.25 |
3. 연산자 (0) | 2019.06.24 |
2. 자료형 (0) | 2019.06.22 |