자바에서의 배열은 C언어와 조금 다르다.

 

int[] odds = {1, 3, 5, 7, 9};

배열은 자료형 타입 바로 옆에 [] 기호를 사용하여 표현한다. 위 예제와 같이 int 자료형의 배열은 int[] 로 표현되었다.

요일의 집합은 다음과 같이 String 배열로 표현 할 수 있다.

String[] weeks = {"월", "화", "수", "목", "금", "토", "일"};

즉, 배열이란 자료형의 종류가 아닌 자료형의 집합을 의미한다.

배열의 길이는 고정되어 있다

위에서 살펴본 요일의 집합 예제는 다음과 같이 고쳐 쓸 수 있다.

String[] weeks = new String[7];
weeks[0] = "월";
weeks[1] = "화";
weeks[2] = "수";
weeks[3] = "목";
weeks[4] = "금";
weeks[5] = "토";
weeks[6] = "일";

배열의 길이만 설정하여 변수를 먼저 생성한 다음 그 값은 나중에 대입하는 방법이다. 

단, 위 예처럼 초기값 없이 배열 변수를 만들때에는 반드시 길이값이 필요하다. 

즉, 다음과 같은 코드는 불가능하다.

String[] weeks = new String[];    // 길이값이 없으므로 컴파일 오류가 발생한다.


Arrays.copyOf() , Arrays.copyOfRange() 메소드를 통해 배열을 복사 할 수 있다.

Arrays.copyOf(원본배열, 복사할 길이);

Arrays.copyOfRange(원본 배열, 복사할 시작인덱스, 복사할 끝인덱스) 인덱스는 0부터 시작하는것 기준

값에 의한 복사이므로 복사된 배열에서 값을 바꿔도 원본 배열의 값이 바뀌지 않음!

 

배열 복사

copyOf(원본 배열, 복사할 길이)

 copyOf() 메서드는 원본 배열의 0번 인덱스에서 복사할 길이만큼 복사할 타겟 배열을 리턴합니다. 

복사할 길이는 원본 배열의 길이보다 커도 되고, 타겟 배열의 길이가 됩니다. 

ex)

 char[] arr1 = {'J' , 'A' , 'V' , 'A'};
 char[] arr2 = Arrays.copyOf(arr1, arr2.length);

위 코드는 arr1[] 배열의 전체 항목을 복사해서 arr2[] 배열을 생성하는 코드입니다.

copyOfRange(원본배열, 시작인덱스, 끝인덱스)

 

copyOfRange(원본배열, 시작인덱스, 끝인덱스)는 원본 배열의 시작 인덱스에서 끝 인덱스까지 복사한 배열을 리턴합니다. 시작 인덱스는 포함이고 끝 인덱스는 포함하지 않습니다. 

ex)

 char[] arr1 = {'J' , 'A' , 'V' , 'A'};
 char[] arr2 = Arrays.copyOf(arr1, 0,3);

'J' , 'A' , 'V' , 'A' 중에 'J' , 'A' , 'V'만 복사됩니다. 

 

'📌 java > Object-oriented Programming' 카테고리의 다른 글

LotteryDrawing.java  (0) 2020.03.26
java - txt.file  (0) 2020.03.26
java.util.Scanner  (0) 2020.03.25
Homework_W2-01  (0) 2020.03.25
Homework_02  (0) 2020.03.20
복사했습니다!