티스토리 뷰
※ 배열 복사
- 배열은 한 번 생성하면 크기를 변경할 수 없다.
- 더 많은 저장 공간이 필요하다면 보다 큰 배열을 새로 만들고 이전 배열로부터 항목값들을 복사해야 한다.
-> 그렇다면 배열 복사 방법은?
1. for문을 이용하는 방법
int[] oldStrArray = {1, 2, 3};
String[] newStrArray = new String[5];
for(int i = 0; i < oldStrArray.length; i++){
newStrArray[i] = oldStrArray[i];
}

2. System.arrayCopy() 메소드를 이용하는 방법
String[] oldStrArray = {"java", "array", "copy"};
String[] newStrArray = new String[5];
System.arraycopy(oldStrArray, 0, newStrArray, 0, oldStrArray.length);

[shallow copy vs deep copy]
- 참조 타입 배열일 경우, 배열 복사가 되면 복사되는 값이 객체의 번지이므로 새 배열의 항목은 이전 배열의 항목이 참조하는 객체와 동일하다. 이것을 얕은 복사(shallow copy)라고 한다. 반대로 깊은 복사(deep copy)는 참조하는 객체도 별도로 생성하는 것을 말한다.
▶ 얕은 복사 :
- 실제로는 하나의 주소 값을 가지고 있으므로 하나라고 볼 수 있다.
- 복사된 배열이나 원본 배열이 변경될 때 서로 간의 값이 같이 변경됩니다.
▶ 깊은 복사 :
- 객체의 실제 값을 새로운 객체로 복사하는 것이다.
- 복사된 배열이나 원본 배열이 변경될 때 서로 간의 값은 바뀌지 않습니다.
3. Arrays 클래스 이용 방법
※ Object.clone()
int[] a = {1,2,3};
int[] b = a.clone();
※ Arrays.copyOf()
int[] a = {1,2,3};
int[] b = Arrays.copyOf(a, a.length);
- Arrays 클래스는 배열을 조작할 수 있는 메소드를 가진 클래스이다.
이 클래스 안에 Arrays.copyOf()를 사용하면 배열의 시작점 ~ 원하는 길이까지 배열의 깊은 복사를 할 수 있다.
※ Arrays.copyOfRange()
int[] a = {1, 2, 3};;
int[] b = Arrays.copyOfRange(a, 1, 3);
- 복사할 배열의 시작점 ~ 원하는 길이를 지정할 수 있다.
'프로그래밍언어 > JAVA' 카테고리의 다른 글
[JAVA] Call-By-Reference vs Call-By-Value / 인스턴스멤버 vs 정적멤버 / 자바 접근제한자 (0) | 2021.02.22 |
---|---|
[JAVA] 객체지향 개념 / Method vs Function / 클래스 (필드, 메소드, 생성자) (0) | 2021.02.21 |
[JAVA] Primitive Type vs Reference Type / 타입별 변수의 메모리 저장 위치 비교 / 열거 타입(Enumeration type) (0) | 2021.02.17 |
[JAVA] 자바 버전/ 기본 타입 / 타입변환(자동 vs 강제)/ JRE vs JDK (0) | 2021.02.16 |
JVM은 무엇이며 자바 코드는 어떻게 실행하는가. (0) | 2020.11.16 |
- Total
- Today
- Yesterday
- 클래스와객체
- java
- 인스턴스멤버
- 자바스크립트Promise
- 자바스크립트Call-back
- 생성자필드메소드
- yarn start
- es6모듈
- 자바스레드
- os
- jre
- nodejs
- dynamic-project
- jdk
- @functools.wraps
- ES6
- 메이븐 저장소
- 객체지향개념
- 익명자식객체
- sequelize.fn
- @functools.lru_cache
- Git
- @functools.singledispatch
- 백준
- 정적멤버
- nunjucks
- 백준2206 파이썬 풀이
- 자바빌드도구
- method와 function
- 사용자정의예외클래스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |