8일차(배열)

Rina's·2023년 4월 20일

코드스테이츠

목록 보기
8/96

🍬배열

😈배열의 생성

생성된 셀은 형태가 정해짐
이때 참조변수는 배열의 맨 첫번째 주소를 가르킴

int[] 변수명; 선언
변수명 = new int[10]; 초기화

선언과 초기화를 한번에
int[] 변수명 = new int[10];

값을 넣어 초기화
int[] 변수명 = {1, 2, 3};

내용에 초기화된 값으로 배열의 크기가 고정된다
베열의 길이가 10이라면 0~9가 된다

호출

변수명[i]로 호출한다
변수명만 호출시 주소값이 출력된다

👿2차원 배열

외부배열과 내부배열로 봤을때 외부배열은 내부배열의 주소값을 가진다
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.length6이라면 인덱스[i]의 범위는 0 ~ 5 가 된다
  • 배열 초기화시 int[]안에 적는 것은 실제 길이인arr.length이기 때문에
  • arr의 마지막 인덱스는 arr[arr.length-1]이 된다.
  • arr[arr.length+1]로 초기화 되었다면 마지막 인덱스는 [arr.length+1] 이 아닌 [arr.length]가 된다
  • 요약하자면 초기화할때 int[]랑 사용할때 arr[]는 다른 값이다 혼동하지 말자
profile
갭린이 리나

0개의 댓글