Java - Array [IT 국비지원/구디 아카데미/김지훈 강사님]

hooon__dii·2023년 8월 24일
0

Java

목록 보기
6/11
post-thumbnail

배열(Array)

자바에서의 배열은 같은 타입의 변수들로 이루어진 유한한 집합이다.
배열을 구성하는 각각의 값을 요소(element), 위치를 가리키는 숫자는 인덱스(index)라고 하며 배열의 인덱스는 0부터 시작한다.

배열을 선언하게 되면 stack 영역에 배열의 변수명을 할당하고 이 변수는 배열의 데이터 값이 연속적으로 저장되어있는 heap 메모리의 주소값을 참조한다.
(배열의 첫 요소의 주소가 배열 객체의 메모리 주소 )

배열의 메모리 공간

배열의 주소 구조

  • 배열의 차원의 수에따라 '[' 의 개수가 달라진다.
  • 위 사진의 I는 int타입의 배열이라는 뜻.
  • @아래로 주소가 담겨있다.

배열의 선언

// 배열을 선언 하는 방법

// 크기를 미리 지정해주는 방법
int[] arr = new int[5];
int arr[] = new int[5];
//  값을 먼저 넣어주는 방법 
int[] arr = {1, 2, 3, 4, 5};
int arr[] = {1, 2, 3, 4, 5};

배열의 특징

  • 같은 자료형의 데이터가 연속적으로 저장된다.
  • 순서가 존재 하며, 색인(index)를 통해 데이터에 접근 할 수 있다.
// 배열에 요소에 값을 할당해주는 예시
int[] score = new int[10];

core[0] = 100;
score[1] = 50;
score[2] = 70;

// or
for( int i=0; i<score.length; i++) {
	score[i] = 100;
	System.out.println("score["+ i +"] : "+ score[i]);
}
  • 처음 배열이 선언될 때 정해진 크기를 변경할 수 없다.
  • 배열을 선언할 때 값을 같이 지정 해주지않으면 초기값을 가지면 할당 된다
    타입별 배열 초기값

배열을 선언 할때 크기를 미리 지정해주어야 하는 이유 ?

배열이 선언 될때 배열의 값이 heap 메모리에 연속적으로 저장되어야 하기 때문에 선언된 배열의 크기 만큼 미리 확보해주어야 한다.

배열을 한번 선언 하면 크기를 변경할 수 없는 이유 ?

메모리상에서 배열의 뒤에 이미 다른 값이 존재할 수도 있기때문이다.


다차원 배열

  • 2차원 배열
// 선언 방식
int arr[][] = new int[2][4];
int[][] arr = new int[2][4];
int arr[][] = {{1, 2, 3},{4, 5, 6}};
int[][] arr = {{1, 2, 3},{4, 5, 6}};

// 2차원 배열 예제
String[][] royal = new String[4][4];

System.out.println(" _ROYAL아파트_");
for (int i = 0; i < royal.length; i++) {
	for (int j = 0; j < royal[i].length; j++) {
		royal[i][j] = i+"층 "+j+"호";
		System.out.println("|   "+i+"층 "+j+"호   |");
	}
	System.out.println(" ------------");
}

결과 array_2_result

  • 3차원 배열
// 선언
int arr[][][] = new int[2][3][4];
int arr[][][] = {{1, 2, 3},{4, 5, 6}};
int[][][] arr = {{1, 2, 3},{4, 5, 6}};

// 3차원 배열 예제
String royal[][][] = new String[4][4][3];
		
System.out.println(" _ROYAL 아파트_");
for(int i=0; i<royal.length; i++) {
	for(int j=0; j<royal[i].length; j++) {
		for(int k = 0; k<royal[i][j].length; k++) {
			System.out.println("| "+i+"층 "+j+"호 "+k+"번방"+" |");
		}
	}
	System.out.println(" -------------");
}

결과 array_3_reult

  • 다차원 배열의 메모리 공간

배열을 공부하면서 메모리까지 같이 공부하게되는 매직
it국비지원 / 구디아카데미 / 김지훈 강사님

0개의 댓글

Powered by GraphCDN, the GraphQL CDN