- 배열
- 같은 자료형의 변수를 하나의 묶음으로 다루는 것
- 배열은 저장된 값마다 인덱스 번호가 0부터 시작하여 설정
- 배열 선언과 할당
- 배열 선언
- 자료형[] 배열명;
- 자료형 배열명[];
- 배열 할당
- 자료형[] 배열명 = nw 자료형[배열크기];
- 자료형 배열명[] = nw 자료형[배열크기];
- 배열 저장구조
- 배열은 참조 변수로 Heap영역에 할당되며 배열 공간의 주소를 저장
- 배열 공간의 주소를 이용해 인덱스를 참조하는 방식으로 값 처리
- 배열 초기화
- 인덱스를 이용한 초기화
- for문을 이용한 초기화
- 선언과 동시에 초기화
- 배열 복사
- 얕은 복사
- 객체의 주소값만 가져와 참조형 변수에 저장하고 하나의 객체를 두변수가 참조하는 것
- e.g.
- int[] arr1 = nex int[4]; int[] arr2 = arr1;
- 깊은 복사
- 새로운 배열 객체를 생성하여 기존 배열의 데이터를 복사하는 것
- e.g.
- 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();
- for(int i=0; i<arr1.length; i++){
- 얕은 복사
- 배열 선언
* 배열 복사 실습
package com.test01;
public class ArrayTest02 {
public String prn(int[] iarr) {
//정수 배열 받아 배열에 저장된 값들을 String으로 값 반환
String str = "";
for(int i=0; i<iarr.length; i++) {
str+= iarr[i]+" ";
}
//System.out.println("prn의 hashcode : "+iarr.hashCode());
return str;
}
public void shallowCopy() {
//얕은 복사
int[] oArr = {1,2,3,4,5};
int[] cArr = oArr;
System.out.println("1.oArr : " + prn(oArr));
System.out.println("1.cArr : " + prn(cArr));
}
//깊은 복사
public void deepCopy1() {
//1. 동일한 배열을 새로 하나 생성하여 값을 복사
int[] oArr = {1,2,3,4,5};
int[] cArr = new int[5];
//for문을 이용해서 값을 1:1 복사
for(int i=0; i<oArr.length; i++) {
cArr[i]=oArr[i];
}
}
public void deepCopy2() {
//2. arraycopy() 사용
int[] oArr = {1,2,3,4,5};
int[] cArr = new int[10];
//arraycopy(src,srcPos,dest,destPos,length);
//src : 원본배열 srcPos:복사 시작 위치
//dest : 카피배열 destPos : 붙여넣기 시작위치
//length : 복사할 길이
System.arraycopy(oArr, 0, cArr, 2, oArr.length);
System.out.println("oArr : " + prn(oArr));
System.out.println("cArr : " + prn(cArr));
//3. clone(
//시작인덱스 등의 설정이 불가능, 원본배열을 통째로복사해 새로운 배열을 할당
int[] cArr2 = new int[10];
System.out.println(cArr2.hashCode());
cArr2 = oArr.clone();
System.out.println(cArr2.hashCode());
System.out.println("cArr2 : " + prn(cArr2));
}
}
- 2차원 배열
- 자료형이 같은 1차원 배열의 묶음으로 배열 안에 다른 배열 존재
- 2차원 배열은 할당된 공간마다 인덱스 번호 두개 부여 (앞 번호는 행, 뒷 번호는 열 [0][0])
- 2차원 배열 선언과 할당
- 배열 선언
- 자료형[][] 배열명;
- 자료형 배열명[][];
- 자료형[] 배열명[];
- 배열 할당
- 자료형[][] 배열명 = new 자료형[행크기][열크기];
- 자료형 배열명[][] = new 자료형[행크기][열크기];
- 자료형[] 배열명[] = new 자료형[행크기][열크기];
- 배열 선언
'JAVA' 카테고리의 다른 글
[JAVA 실습 #5] 5. 2차원 배열 (0) | 2023.02.26 |
---|---|
[JAVA 실습 #5] 4. 배열(Array) (0) | 2023.02.25 |
[JAVA 실습 #4] 4. 제어문(2)_반복문 (0) | 2023.02.23 |
[JAVA 실습 #3] 4. 제어문_조건문 (0) | 2023.02.23 |
[JAVA #3, #4] 4. 제어문 (0) | 2023.02.23 |