Java 배열 Arrays 클래스





결과

결과





코드

public static void main(String[] args) {
		int[] arr1 = {4, 2 , 5, 1, 3};
		char[] arr2 = {'C', 'A', 'b', 'a', 'c' };
		String[] arr3 = {"afd", "gdr", "abg", "bcg", "zfg" }; 
		String[] arr4 = Arrays.copyOf(arr3, arr3.length);
		
		Arrays.sort(arr1);
		for(int i=arr1.length-1;  i>=0; i--)
			System.out.print(arr1[i] + ", ");
		System.out.print("\n");

		Arrays.sort(arr2);
		for(int i=0; i<arr2.length; i++)
			System.out.print(arr2[i] + ", ");
		System.out.print("\n");
		
		Arrays.sort(arr3);
		for(int i=0; i<arr3.length; i++)
			System.out.print(arr3[i] + ", ");
		
	}





Arrays.copyOf(배열, 배열 길이) : 배열 복사

- 배열을 깊은 복사한다.





Arrays.sort() : 배열을 오름차순으로 정렬한다.

- 내림차순은 간단하게 정렬을 한 후 뒤에서부터 참조하면 된다.


- 클래스 배열을 정렬하고자 하면 compareTo 메소드를 Override 해서 정렬할 값을 지정해주면 된다.







Java 배열 기본값, 배열 복사





1. 배열 타입별 기본값


- 배열을 생성한 후 default 값으로 자동으로 초기화 된다.

 종류

타입

default 값

 정수형

 byte[]

0

 short[]

0

 char[]

'\u0000'

 int[]

0

 long[]

0L

 실수형

 float[]

 0.0F

 double[]

 0.0

 논리형

 boolean[]

false

 참조형

 클래스

null






2. 배열 복사. 얕은 복사 vs. 깊은 복사


1) 얕은 복사

- 얕은 복사일 경우 기종의 항목들을 참조하는 또하나의 객체를 만들 뿐이다.



- 코드1을 보면 new_arr = old_arr로 복사 후 new_arr[1]의 값을 바꾸었다.

- 이후 old_arr의 요소들을 확인해보면 old_arr[1]의 값이 바뀐 것을 확인할 수 있다.

코드1

결과1

- 따라서 얕은 복사는 같은 값들을 참조하는 다른 이름의 객체를 만든 것 뿐이다.





2) 깊은 복사

- 깊은 복사를 해주기 위해서는 크게 2가지 방법이 있다.

 > for문을 사용하여 일일이 값을 초기화 해준다.

 > System.arraycopy()를 사용한다.



- 코드2는 System.arraycopy()를 사용하였다.

System.arraycopy(복사 할 배열, 시작 index, 복사 받는 배열, 시작 index, 길이[복사할 개수])



코드2

결과2




- 깊은 복사는 얕은 복사와 달리 새로운 값을 같으므로 new_arr 요소의 값을 변경하여도 old_arr의 요소가 변하지 않는다.







'JAVA > 기초' 카테고리의 다른 글

Java Singleton(싱글톤)  (0) 2020.03.17
Java static 정적 변수, 메소드  (0) 2020.03.17
Java 향상된 for문, label  (0) 2020.03.16
Java 형변환  (0) 2020.03.15
Java 데이터 타입  (0) 2020.03.15

+ Recent posts