본문 바로가기

Java

Java 배열

배열은 여러 개의 값을 함께 저장할 수 있다

 

선언과 생성

데이터 타입 [] 변수 이름= new 데이터 타입 [길이];

1. int [] arr (선언)  = new int [2]; 길이가 2인 정수타입의 배열이 생성됨

2. int arr [] (선언)   = new int [2];                             "

 

배열의 index는 0부터 시작이다.

배열은 생성될 때 각 타입별 초기값으로  초기화된다

Ex) int = 0, boolean = false, String = null로 초기값이 정해진다. 

 

배열의 값 하나를 꺼내고 싶을 땐 arr [index] 이렇게 값을 꺼내오면 된다

 

배열의 값 모두를 꺼내고 싶으면 arr[index] 이걸 배열 모두를 해주면 되는데

이건 너무 불편하고 중복이 많아진다

 

그러므로 반복문을 사용해서 빼주면 간결하게 할 수 있다.

Ex) for (int i = 0; i < arr.length; i++){

System.out.println(arr [ i ]) 이렇게 해주면 모두를 가져올 수 있다.

}

 

향상된 반복문을 사용한 출력 방식

for(int i : arr){

System.out.println(arr[ i ]);

}

 

배열 초기화

 

1. 직접 넣는 방식 

int [] arr = {1,2,3};

String str = {"a", "b", "c"};

 

2. 반복문을 사용한 방식

for(int i = 0; i < arr.length; i++){

arr [ i ] = i + 1; 이걸 해주면 배열에 0번째부터 1,2,3 이 들어간다.

}

 

배열의 주소를 모두 같은 값으로 초기화

Arrays.fill(arr, 1);

fill : 채우다

arr의 배열의 값을 1로 채운다

 

 

복사

얇은 복사

실제값은 1개로 유지되는 것 

참조형 변수를 복사를 하게 되면 실제값이 복사가 되는게 아니고 주소값이 복사가 된다.

Ex)  이렇게 되면 b[0] 의 값을 1로 바꿨지만 a와 b는 같은 주소값을 바라보고 있기 때문에 

a[0]의 값도 1로 바뀌게 된다. 

int[] a = {1,2,3,4}

int[] b = a;

b[0] = 1;

 

깊은 복사

깊은 복사는 얇은 복사와 다르게 실제값을 하나하나 꺼내서 복사를 해주면 된다.

이럴땐 for문을 사용하면 된다.

Ex) for문을 사용하면 같은 주소값을 바라보지 않는다

int[] a = {1,2,3,4};

int[] b = new int[a.length];

 

for(int i = 0; i < b.length; i++){

b[i] = a[i]    // 깊은 복사

}

 

깊은 복사 매서드를 사용할 수도 있다.

1.  clone()

이 메서드는 2차원의 배열에서는 얇은 복사로 동작

1차원 배열에서만 깊은 복사가 동작

 

2.Arrays.copyOf()

이걸 사용하면 된다 

이건 2차원의 배열에서도 깊은 복사가 동작

 

3.Arrays.copyOfRange(배열 , startindex, endindex)

이것 또한 복사하는건데

배열을 startIndex부터 endIndex 전까지 잘라서 복사 가능

 

 

 

 

'Java' 카테고리의 다른 글

Java 제네릭  (0) 2024.07.31
Java Stream(스트림)  (0) 2024.07.30
Java 반복문 for, while, do-while  (0) 2024.07.23
Java 조건문 if, switch  (0) 2024.07.23
Java 연산자  (1) 2024.07.23