PLOD

[Java] 배열(array) 본문

개발 공부/Java

[Java] 배열(array)

훌룽이 2023. 9. 4. 12:45

배열은 참조 자료형, 객체로 취급한다. 배열의 타입은 Primitive Data Type, Reference Data Type(클래스 , 인터페이스) 모두 선언 가능하다

// java 1차원 배열 선언

int[] arrays = new int[5];  								// 배열의 크기가 5인 배열 생성 및 초기화(default)
int arrays2[] = new int[]{10,11,12,13,14,15,16}; 			// 생성과 초기화



// java 2차원 배열 선언

int[][] arrays3 = new int[5][4];							// 행의 크기가 5 열의 크기가 4인 2차원 default 배열 생성
int array4[][] = new int[5][];								// 열 크기가 가변적인 배열 생성
int []array5[] = new int[][4];								// 행 크기가 가변적인 배열 생성


/* 2차원 배열 생성 후 출력*/

public class ArrayEx {   
    
   public static void main(String[] args){ 
			int[][] arrays;
			arrays = new int[][] { {1}, 
                              {2, 3 },
                              {4, 5, 6, 7 },
                              {8, 9, 10, 11, 12}};			// 배열 생성
			System.out.println(arrays.length);				// 배열의 행 size
			for(int i=0;i < arrays.length;i++){
  				for(int j=0; j < arrays[i].length;j++){
      					System.out.print(arrays[i][j]+ " ");
  			}
  			System.out.println();
		}
	}
}

Java에서 배열을 복사할 때 내장 라이브러리에 포함되어 있는 System.arraycopy() 메서드를 사용한다. arraycopy를 호출 할 때는 어느 배열의 몇 번째 요소에서 어느 배열로 몇 번째 요소로 몇 개의 값을 복사할 것인지 지정해줘야 하는데, 다음과 같이 생각하면 이해하기 쉽다.

System.arraycopy(num,0,newArr,0,num.length) 
-> num 배열의 0번 인덱스에서 num.length 만큼 복사하여 newArr 0번 인덱스에 붙여넣기

이때 복사하려는 배열의 위치가 적절하지 못하여 복사하려는 내용보다 여유 공간이 적으면 에러가 발생한다.

package ch05;

public class ArrayEx04 {

	public static void main(String[] args) {
		char[] abc = {'A','B','C','D'};
		char[] num = {'0','1','2','3','4','5','6','7','8','9'};
		
		char[] newArr = new char[abc.length + num.length];
		System.arraycopy(abc, 0, newArr, 0, abc.length);
		System.arraycopy(num, 0, newArr, abc.length, num.length);
		for(int i = 0 ; i < newArr.length ; i++) {
			System.out.println(newArr[i]);
		}
		System.out.println();
		System.arraycopy(abc, 0, num, 0, abc.length);
		System.out.println(num);

	}

}
Comments