[java] 배열

sesame·2021년 8월 4일
0

Java

목록 보기
12/25

배열

같은 자료형의 변수를 하나의 묶음으로 처리하는 자료구조로 인덱스 번호가 0부터 시작한다

//배열 선언
int[] num1;
int num2[];

> 배열의 저장 구조

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

img src="파일경로"width="숫자%",height="숫자%"
%는 비율 px은 단위
new가 붙은 건 모두 heap 영역에 저장

> 버블 정렬

버블 알고리즘은 현재 배열을 바로 앞 배열과 비교하면서 이동한다

for (int i = 0; i < (arr.length - 1); i++) {
	for (int j = 0; j < (arr.length - 1) - i; j++) {
		if(arr[j] < arr[j+1]) {    //현재 오름차순 '>' 로 바꾸면 내림차순
			//swap
			int temp = arr[j];
			arr[j] =arr[j+1];
			arr[j+1] = temp;
		}
	}
}

> 2차원 배열

//배열 할당
int[][] arr = new int[5][3]
int[][] arr = new int[5][]
arr[0] = new int[2];
arr[1] = new int[5];
arr[2] = new int[4];

> 객체 배열

Student[] students = new Student[30];   // heap 주소공간, stack 주소공간
for (int i=0; i<students.length; i++){
     students[i] = new Student();
}

> 배열의 복사

  • 얕은 복사
    객체의 주소 값만 가져와 참조형 변수에 저장하고 하나의 객체를 두 변수가 참조하는 것
int[] arr1 = new int[4];
int[] arr2 = arr1;
  • 깊은 복사
    새로운 배열 객체를 생성하여 기존 배열의 데이터를 복사하는 것
for(int i= 0; i< originArr.length; i++) {     //방법 1
     destArr2[i] = originArr[i];
}
System.arraycopy(originArr, 0, destArr2, 0, originArr.length);    //방법 2
arr2= Arrays.copyOf(originArr, originArr.length);             //방법 3
arr2= arr1.clone();                                 //방법 4
  • copyOf()메소드 살펴보기!
    첫 번째 매개변수로 원본 배열을 전달하고, 두 번째 매개변수로 원본 배열에서 새로운 배열로 복사할 요소의 개수를 전달받는다.
copyArr = Arrays.copyOf(originArr, originArr.length);

public static int[] copyOf(int[] original, int newLength) {
	int[] copy = new int[newLength];
    //arraycopy()로 copy배열에 복사
	System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength));
    //copy변수가 참조하는 Heap 영역 공간에는 originArr 주소의 데이터 값이 들어가 있다. (깊은 복사)
	return copy;
    //여기서 copy를 리턴해주면 copyArr에는 copy의 주소값이 복사된다 (얕은 복사)
}

0개의 댓글

관련 채용 정보