배열의 종류

Cloudman·2022년 11월 13일

프로그래머스 자바

목록 보기
8/11

❓배열

같은 데이터 타입을 가진 연속된 메모리 공간으로 이루어진 자료구조를 말한다.



아래의 그림은 배열의 구조를 그림으로 표현하고,

배열에 변수를 담을 때 어떻게 하는지와 담았을 때의 모습을 보여준다.

0 번 인덱스에 1, 2 번 인덱스에 2 ... 이런식으로 되어 있는데
배열을 가리키는 변수 자체가 값을 가지고 있는게 아니라 인트 값을 가질 수 있는 4 칸의 메모리를 가리킨다고 봐야 한다.

📒 1차원 배열

int[] array1 = new int[100];

int 타입배열, 변수명 array1100 개의 정수값을 가지고 있다.

array1[0] = 50;
array1[10] = 100;

System.out.println(array1[0] + " 와 " + array1[10]);
// 결과 : 50 와 100

위처럼 하면 array1 배열의 0 번째에 5010 번째에 100 을 넣을 수 있다.

배열을 선언하고 바로 값을 넣는 두가지 방법

int[] array2 = new int[]{1, 2, 3, 4};
int[] array3 = {1, 2, 3, 4};

System.out.println(array3[3]);	// 결과 : 4

아래와 같이 배열에 있는 값을 꺼내서 다른 변수에 담을 수도 있다.

int value = array3[0];

System.out.println(value);	// 결과 : 1

배열의 변수는 하나인데 여러가지 값이 들어가기 때문에 배열은 참조형 타입 이라고 한다 !!!



📌 for 문을 이용한 배열

정수타입의 100 개 짜리의 배열에 for 문을 이용해서 1 부터 100 까지의 숫자를 차례대로 넣는 방법이다.

int[] iarray = new int[100];
for (int i = 0; i < iarray.length; i++) {
    iarray[i] = i + 1;
}

이번에는 1 부터 100 까지의 합을 구하기

방법은 1 부터 100 까지의 값을 꺼내서 어딘가에 계속 넣어줘야 한다.

int sum = 0;

for (int i = 0; i < iarray.length; i++) {
    sum += iarray[i];
    // 변수는 선언한 지점이 어디냐에 따라서 사용할 수 있는 범위가 달라진다.
    // 그것을 변수의 스코프라고 한다.
    // 기본적으로 그 변수가 선언된 지점을 감싸고 있는 괄호 안이 변수의 스코프가 된다.
    // 변수는 선언될 때 생성 되었다가 해당 블록이 끝날 때 소멸된다.
    // 그래서 각 for 문의 i 가 중복으로 사용되어도 문제가 되지 않았던 것이다.
}

System.out.println(sum);    // 결과 : 5050




📒 2차원 배열

int[][] array4 = new int[3][4];
위처럼 선언 해주면 아래와 같은 형태의 배열이 생성된다.

아래처럼 선언을 하면

array4[0] = 10;
int 형 배열을 가리키는 참조 변수이기 때문에 값을 담을 수 없다

array4[0][1] = 10;
이렇게 해야 값을 담을 수 있다.

int[][] array5 = new int[3][];
// 위처럼 선언 했을 때에는

array5[0] = new int[1];
// 0 번째 인덱스가 실제 가리키는 배열을 만들어줘야 한다.

array5[1] = new int[2];
array5[2] = new int[3];

그렇지 않으면 실행했을 때 에러가 발생한다.
아래의 이미지를 참고하자.

업로드중..



2차원 배열 또한 선언과 동시에 초기화 할 수 있다.
아래 처럼 선언과 동시에 초기화가 가능하다.

int[][] array6 = {{1}, {1, 2}, {1, 2, 3}};

System.out.println(array6[0][0]);
// 결과 : 1

System.out.println(array6[2][2]);
// 결과 : 3
profile
코린이

0개의 댓글