생성된 셀은 형태가 정해짐
이때 참조변수는 배열의 맨 첫번째 주소를 가르킴
int[] 변수명; 선언
변수명 = new int[10]; 초기화
선언과 초기화를 한번에
int[] 변수명 = new int[10];
값을 넣어 초기화
int[] 변수명 = {1, 2, 3};
내용에 초기화된 값으로 배열의 크기가 고정된다
베열의 길이가 10이라면 0~9가 된다
변수명[i]로 호출한다
변수명만 호출시 주소값이 출력된다
외부배열과 내부배열로 봤을때 외부배열은 내부배열의 주소값을 가진다
int[][] 변수명; 선언
변수명 = new int[31][3]; 초기화
선언과 초기화를 한번에
int[][] 변수명 = new int[10][5];
값을 넣어 초기화
int[][] 변수명 = {{1,2,3}{1,2,3}};
2차원 이상이 되면 마지막 차수의 배열(내부배열)을 고정하지 않아도 된다
이를 가변배열이라 한다
int[][] ages = new int[3][];
ages[0] = new int[5]; 0번은 5개
ages[1] = new int[6]; 1번은 6개
ages[2] = new int[7]; 2번은 7개의 배열공간이 생성되었다
내부배열의 생성도 값을 넣어 간단하게 초기화 할 수 있다
int[][] num = {
{ 30, 32, 39, 59, 23 },
{ 31, 41, 52, 56, 72, 13 },
{ 45, 32, 84, 23, 13, 42, 55 },
};
Arrays.toString(num[1]) = [31, 41, 52, 56, 72, 13]
외부배열로 호출시 내부배열의 묶음이 출력된다
int[i] [j] 외부, 내부배열로 호출시 그 값이 출력된다
for (int i = 0; i < scores.length; i++) {
scores[i] = 0;
}
System.out.println("for문 사용: " + Arrays.toString(scores));
결과: [0, 0, 0, 0, 0]
int j = 0;
while (j < scores.length) {
scores[j++] = 1;
}
System.out.println("while문 사용: " + Arrays.toString(scores));
결과: [1, 1, 1, 1, 1]
for (int score: scores) {
score = 2;
}
System.out.println("향상된 for문 사용 : " + Arrays.toString(scores));
향상된 for문을 사용하면 배열 요소의 값을 바꿀 수 없다
그대로 [1, 1, 1, 1, 1]이 출력된다
🦀🦀🦀
public class Solution {
public int[] addToBack(int[] arr, int el) {
// TODO:
int[] output = new int[arr.length+1];
System.arraycopy(arr, 0, output, 0, arr.length);
output[arr.length] = el;
return output;
}
}
배열에서 쉽게 햇갈리는 부분이다
arr.length 가 6이라면 인덱스[i]의 범위는 0 ~ 5 가 된다int[]안에 적는 것은 실제 길이인arr.length이기 때문에arr[arr.length-1]이 된다.arr[arr.length+1]로 초기화 되었다면 마지막 인덱스는 [arr.length+1] 이 아닌 [arr.length]가 된다int[]랑 사용할때 arr[]는 다른 값이다 혼동하지 말자