티스토리 뷰

Java

배열

토마토계란 2020. 5. 29. 10:19

 

배열 선언

int[] int_arrays;
int int_arrays[];

 

배열 생성

int[] array;
array = new int[5];	// 0으로 초기화. 참조형 배열은 null로 초기화

OR

int[] array = new int[]{1,2,3,4,5};

OR

int[] array = {1,2,3,4,5};

 

JAVA 에서의 배열의 특징

1) Java에서는 길이가 0인 배열도 생성할 수 있다. 
int[] arr = new int[0];

2) JVM이 모든 배열의 길이를 별도로 관리. read-only라서 수정할 수는 없다.
arr.length

3) 배열의 이름 변수에는 배열의 할당된 시작 주소가 저장되어 있다. 따라서 함수의 파라미터로 받는 경우 메모리 할당을 한 후에 넘겨주어야 한다.

int add(int[] num){};

add(new {1,2,3,4,5}); // O
add({1,2,3,4,5}); // X

배열 복사

1) naive 한 방법

int[] arr = new int[]{1, 2, 3, 4, 5};	// source

int[] temp = new int[10];	// 원하는 배열의 크기만큼을 새로 생성

for(int i = 0; i < arr.length; i++)	// for문을 돌며 값 복사
	temp[i] = arr[i];

arr = temp;	// 배열의 시작 주소를 새로 생성한 배열의 주소로 바꾼다

 

*원래 arr의 메모리는 garbage collector에 의해 해제된다

2) System.arraycopy() 함수를 이용한 복사

arraycopy 함수는 지정된 범위의 값들을 한 번에 통째로 복사한다. 배열은 연속적으로 할당되므로 C에서의 memcopy와 같이 한꺼번에 메모리 복사를 하는 듯하다.

 

다차원 배열 선언

int[][] int_arrays;
int int_arrays[][];

 

다차원 배열 생성

int[][] array;
array = new int[5][3];	// 0으로 초기화. 참조형 배열은 null로 초기화

OR

int[][] array = new int[][]{ {1,2,3,4,5}, {6,7,8,9,10}, {11,12,13,14,15} };

OR

int[][] array = { {1,2,3,4,5}, {6,7,8,9,10}, {11,12,13,14,15} };

 

가변 배열

int[][] arr = new int[5][]; 와 같이 생성하면 각 행마다 다른 길이의 배열을 생성할 수 있다.

'Java' 카테고리의 다른 글

static method 는 언제 써야할까  (0) 2020.09.29
Refactoring 참고 링크 모음  (0) 2020.09.09
의존성 주입 Dependency Injection  (0) 2020.08.27
valueOf  (0) 2020.08.25
클래스 멤버  (0) 2020.05.29
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함