변수 값 변경
// 변수의 두 값 변경하기
int num1 = 10;
int num2 = 20;
System.out.println("num1 : " + num1); //10
System.out.println("num2 : " + num2); //20
int temp;
temp = num1;
num1 = num2;
num2 = temp;
System.out.println("num1 : " + num1); //20
System.out.println("num2 : " + num2); //10
순차정렬
- 순차정렬이란 정렬 알고리즘에서 가장 간단하고 기본이 되는 알고리즘으로
배열의 처음과 끝을 탐색하면서 차순대로 정렬하는 가장 기초적인 알고리즘이다.
- 처음부터 해당 인덱스 전까지 값을 비교하여 정렬하는 방식.
arr[0] | [1] | [2] | [3] | [4] |
3 | 1 | 5 | 4 | 2 |
//오름차순 정렬
//인덱스를 한 개씩 증가시키는 반복문
for(int i = 1; i < iarr.length; i++) {
//인덱스가 증가할 때마다 처음부터 해당 인덱스 전까지 값을 비교하는 반복문
for(int j = 0; j < i; j++) {
//오름차순 정렬을 위한 처리
//내림차순은 부호만 반대로 바꾸면 됨
if(iarr[i] < iarr[j]) { //기준인덱스 < 비교인덱스
int temp;
temp = iarr[i];
iarr[i] = iarr[j];
iarr[j] = temp;
}
}
}
for(int i = 0; i < iarr.length; i++) {
if(i < iarr.length - 1) {
System.out.print(iarr[i] + ", ");
}else {
System.out.print(iarr[i]);
}
}
배열 - 얕은 복사
- 배열의 주소만 복사한다.
- 원본배열에 영향을 끼침
//얕은 복사는 배열의 주소만 복사한다.
int[] originArr = {1, 2, 3, 4, 5}; //stack에 있는 변수
int[] copyArr = originArr; //변수의 주소값만 복사해서 대입
originArr[0] = 99;
// 값 변경 후 출력
// originArr : 99, 2, 3, 4, 5
// copyArr : 99, 2, 3, 4, 5
//hashCode를 출력 해보면 같은 주소값의 키 값을 가진다.
System.out.println("originArr의 hashCode() : " + originArr.hashCode());
System.out.println("copyArr의 hashCode() : " + copyArr.hashCode());
---------------------------------------------> 레퍼런스 주소만 복사 | ||
Stack | heap | static |
int[] [ 0x1234 ]originArr int[] [ 0x1234 ]copyArr |
0x1234 [ 1 | 2 | 3 | 4 | 5 ] 99 |
배열 - 깊은 복사
- 동일한 새로운 배열을 하나 생성하고 값을 복사하는 것
- 원본배열에 영향을 끼치지 않음
//깊은 복사는 동일한 새로운 배열을 하나 생성하고 값을 복사하는 것이다.
int[] originArr = {1, 2, 3, 4, 5};
int[] copyArr = new int[5];
//for문을 이용하여 값을 1:1 복사한다.
for(int i = 0 ; i < originArr.length; i++) {
copyArr[i] = originArr[i];
}
originArr[0] = 99;
// 값 변경 후 출력
// originArr : 1, 2, 3, 4, 5
// copyArr : 99, 2, 3, 4, 5
//hashCode를 출력 해보면 다른 주소값의 키 값을 가진다.
System.out.println("originArr의 hashCode() : " + originArr.hashCode());
System.out.println("copyArr의 hashCode() : " + copyArr.hashCode());
---------------------------------------------> 레퍼런스 주소를 가지고 있는 것도 복사 | ||
Stack | heap | static |
int[] [ 0x1234 ]originArr int[] [ 0x5678 ]copyArr |
0x1234 [ 1 | 2 | 3 | 4 | 5 ] 0x5678 [ 1 | 2 | 3 | 4 | 5 ] 99 |
값 1:1 대입 (배열 복사) 방법
- for문을 이용한 배열 복사
- arraycopy()를 이용한 배열 복사
System.arraycopy(원본배열, 복사를시작할인덱스, 복사할배열, 복사를시작할인덱스, 복사할길이); - clone()을 이용한 복사
copyArr = originArr.clone();- 복사본 배열이 미리 할당되어 있는 경우 기존 배열을 버리고 복사한 새로운 배열을 참조한다.
'JAVA > 이론 정리 및 예제' 카테고리의 다른 글
[JAVA/자바] #4_4 배열 실습문제 (0) | 2021.09.14 |
---|---|
[JAVA/자바] #4_3 배열 실습문제 (0) | 2021.09.14 |
[JAVA/자바] #4_1 배열 / 예제 (0) | 2021.09.05 |
[JAVA/자바] #3_6 제어문 실습 (0) | 2021.09.05 |
[JAVA/자바] #3_5 실습문제2 (0) | 2021.09.05 |