배열은 여러 개의 값을 함께 저장할 수 있다
선언과 생성
데이터 타입 [] 변수 이름= 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 |