Part 5. 1차원 배열

Hyunsu·2023년 2월 12일
0

국비 교육

목록 보기
5/36
post-thumbnail

필기 정리는 같은 단원의 내용이면 다른 날 진행한 수업이라도
나중에 쉽게 찾아보기 위해서 게시글 하나에 같이 올리고자 한다.

📝 목차

  1. 메모리 구조
  2. 배열 선언과 할당
  3. 배열 저장구조
  4. 배열 초기화
  5. 배열 복사

1. 메모리 구조

JVM 메모리 구조는 다음과 같다.

메모리내용
Stack메서드 내 지역 변수 선언 시 할당되는 영역
Heapnew 연산자에 의해 생성된 배열이나 객체가 할당되는 동적 메모리 영역
Static클래스 변수 등

2. 배열 선언과 할당

📌 배열

같은 자료형의 변수를 하나의 묶음으로 다루는 것이다.
배열은 저장된 값마다 인덱스 번호가 0 부터 시작하여 설정된다.

// 배열 선언
자료형[] 배열명;
자료형 배열명[];

// 배열 할당
자료형[] 배열명 = new 자료형[배열크기];
자료형 배열명[] = new 자료형[배열크기];

int[] arr = new int[3];
int arr[] = new int[3];

3. 배열 저장구조

참조 변수로 Heap 영역에 할당되며 배열 공간의 주소를 저장한다.
배열 공간의 주소를 이용해 인덱스를 참조하는 식으로 값 처리한다.

new 연산자

Heap 메모리 영역에 배열이나 객체 등 새로운 공간을 할당

int[] arr = new int[3];

4. 배열 초기화

인덱스가 순차적으로 증가함에 따라 초기화 할 리터럴 값이 규칙적이라면 반복문을 통해 배열 초기화가 가능하다.

// 인덱스 이용한 초기화
arr[0] = 1;

// for 문 이용한 초기화
for (int i = 0; i < arr.length; i++) {
	arr[i] = i;
}

// 선언과 동시에 초기화
int[] arr = {1, 2, 3, 4, 5};
int[] arr = new int[] {1, 2, 3, 4, 5};
String fruit[] = {"사과", "포도", "참외"};

5. 배열 복사

📌 얕은 복사

객체의 주소 값만 가져와 참조형 변수에 저장하고 하나의 객체를 두 변수가 참조하는 것

int[] arr1 = {10, 20, 30, 40, 50};
int[] copyArr1 = arr1;

// toString() : 저장된 값을 하나의 문자열로 만듦
System.out.println("arr1 : " + Arrays.toString(arr1)); 
System.out.println("arr1 : " + Arrays.toString(copyArr1));

📌 깊은 복사

새로운 배열 객체를 생성하여 기존 배열의 데이터를 복사하는 것

for (int i = 0; i < arr1.length; i++) {
	arr2[i] = arr1[i];
}

// 원본 배열명, 원본배열 시작인덱스, 복사 배열명, 복사배열 시작인덱스, 복사길이
System.arraycopy(arr1, 0, arr2, 0, arr1.length);

arr2 = Arrays.copyOf(arr1, arr1.length);
arr2 = arr1.clone();
profile
현수의 개발 저장소

0개의 댓글