Programming/JAVA

[JAVA] 배열(Array) / ArrayIndexOutofBoundsException / arraycopy() / copyOf() / clone() / 관련 예제

Jayna. 2023. 12. 22. 16:04
728x90

 

 배열(Array)

- 하나의 공간에 여러 개의 값을 담을 수 있다. 단, 같은 자료형의 값들이어야 한다.

- 배열의 각 index 자리에 실제 값이 담기며, index는 0부터 시작한다.

/* 배열 선언 */
int arr[];
int[] arr; // => 주로 많이 사용

/* 배열 할당*/
// 배열에 몇 개의 값이 들어갈지 배열의 크기를 정해주는 과정
// 지정한 개수만큼 값이 들어갈 공간이 만들어짐
int[] arr = new int[5];		// 선언과 동시에 할당(참조형:new)
arr[0] = "값1";
arr[1] = "값2";
...
arr[4] = "값5";

 

ArrayIndexOutofBoundsException  => 배열의 인덱스 범위를 벗어났다.

pulic void arrayMethod(){
	String[] names = new String[3];
    
    names[0] = '홍길동';
    names[1] = '가나다';
    names[2] = '호랑이';
    
    //names[100] = '제이나';   
    // => ArrayIndexOutofBoundsException : 100  => 배열의 인덱스 범위를 벗어났다.
    
    for(int i=0; i<names.length; i++){
    	System.out.println(names[i]);
    }
}

 

728x90

배열복사

1. 얕은 복사(Shallow Copy) : 배열의 주소값만을 복사

 

2. 깊은 복사(Deep Copy): 동일한 새로운 배열을 하나 생성해서 실제 내부값까지 복사

 

1) arraycopy() 메소드를 이용한 Deep Copy

     몇 번 인덱스부터 몇 개를 어느 위치의 인덱스에 복사할 것인지 모두 지정 가능

 

  2) copyOf() 메소드를 이용한 Deep Copy

     무조건 원본배열의 0번 인덱스부터 복사가 진행됨(지정된 개수만큼)

   3) clone() 메소드를 이용한 Deep Copy

728x90