배열
1. 기본 배열
2. 배열의 배열
3. call by value, call by reference
1. 기본 배열
- 배열 = 같은 데이터 타입의 묶음- 데이터를 많이 관리하기 위해 사용하는 것이 배열
배열의 기본 형식
예)
public class Ex05_for06 {
public static void main(String[] args){
int number = 10;
number = 29; // <- 이렇게 되면 10, 29가 저장되는것이 아니라 29만 저장됨(최신의 것만 남음)
int[] array = new int [8];
array[0] = 10;
array[1] = 20;
array[2] = 30;
array[3] = 40;
array[4] = 50;
array[5] = 60;
array[6] = 70;
array[7] = 80; // 이것을 한 줄로 표현한 것이 밑에 나온 구문
int[] array = new int []{10,20,30,40,50,60,70,80};
// <- 10과 20,30,40이 붙어서 int 공간에 함께 저장이 됨 = 배열(중괄호 안에 들어가는 수는 더 넣을 수 있음)
int value = array[3]; // <- 인덱스 번호 3이므로 40을 의미(인덱스 번호는 0부터 시작한다 : 번호0이 10, 1이 20...)
System.out.println("array[3]: " + array[3]); // 출력 결과는 array[3]: 40이다
}//end of main
}//end of class
| cs |
예)
public class ArrayExp{
public static void main(String[] args){
int [] arr = new int [3]; //int[] 데이터 타입의 변수 arr을 선언, int타입의 3개짜리 배열을 arr에 대입
arr[0] = 7;
arr[1] = 3;
arr[2] = 4; // 0번, 1번, 2번 방의 값을 대입
System.out.println(arr[2]); // 2번방 값인 4 출력
int [] t = arr; // int[] 데이터 타입의 변수 t를 선언, 위에서 언급했던 arr을 t에 대입
arr[1] = 1001001; // 0번, 1번, 2번 방의 값은 arr 값을 그대로 참조, 그리고 1001001이라는 값을 1번방에 대입
System.out.println(t[1]); // t의 1번방의 값이 1001001로 바뀌었으므로 출력
System.out.println("arr[1]: "+arr[1]); // t가 참조한 arr의 1번방 값도 1001001로 바뀌었으므로 같은 값이 출력
}// end of main
}// end of class
| cs |
2. 배열의 배열
배열의 배열
예)
public static void main(String[] args){
int [][] arr = new int[6][];
arr[0] = new int[1];
arr[1] = new int[2];
arr[2] = new int[3];
arr[3] = new int[4];
arr[4] = new int[1];
arr[5] = new int[1];
int value = 0;
for(int i = 0; i < arr.length; i++){
for(int j = 0; j < arr[i].length; j++){
arr[i][j] = value;
value++;
//System.out.println("i*j = "+(i*j));
}//end of inner for
}//end of outer for
for(int i = 0; i < arr.length; i++){
for(int j = 0; j < arr[i].length; j++){
System.out.println(arr[i][j]);
}//end of inner for
}//end of outer for
}//end of main
| cs |
배열의 배열 사례 도식화
3. call by value, call by reference
1) call by value(값을 대입하여 호출한다): 값을 전달한다예) int i = 10;
int j = i; → j = 10
2) call by reference(참조값을 대입하여 호출한다): 주소(주소값)를 전달한다
예)
int [] arr1 = new int[7];
arr1 [0] = 1;
arr1 [1] = 2; ...
arr1 [4] = 5; ...
arr1 [6] = 7;
int [] j = arr1;
j[4] = 7273;
System.out.println(j[4]);
System.out.println(arr1[4]); //출력시 값은 위 아래 모두 7273
- 이와 같은 결과가 나오는 것은 주소를 참조하기 때문
- j[4] = 7273 구문을 통해 첫 번째 출력문에서 7273이 나오는 것은 당연
- 그런데 arr1은 j의 주소를 참조
- 따라서 arr1의 인덱스 4번 역시 7273가 된다
예) 외동아들인 철수의 학교에서 출석번호는 20번이다: 철수 - 출석번호 20번 / 외동아들
학교에서 배탈이 난 철수는 조퇴를 했다
출석번호 20번은 배탈이 났다
조퇴하고 집에 온 외동아들은 배탈이 났다
즉, 출석번호 20번이 배탈난 것 = 외동아들 철수가 배탈난 것