반응형
배열 기본 문법
1차원 배열 생성 (int 형)
int[] array = new int[5]; // 방법 1
int array[] = new int[5]; // 방법 2
- 5칸짜리 int형 배열 생성 (index : 0~4)
- 초기값을 따로 지정 안해주면 0이 들어감 (String의 경우 null값이 들어감)
- 배열의 선언은 메모리 할당을 뜻함
- 배열을 선언했을 때, 첫 번째 index가 메모리의 1000번지 주소에 올라갔다고 가정하면
- array에는 메모리주소 1000이 들어가고, 배열은 1000번지부터 연속적으로 메모리 할당을 받음(int=4byte => 1000~1020)
- 2차원 배열의 메모리 할당은 array에는 array[0]의 주소가 들어가고,
- array[0]에는 array[0][0]의 주소가 들어가고 array[1]에는 array[1][0]의 주소가 들어감
- 이 때, array[0][0]
array[0][4], array[1][0]array[1][4]가 연속적으로 메모리에 할당됨 (행 자체를 하나의 객체로 봄)
1차원 배열 생성 및 초기값 지정
int[] array = new int[] {1,2,3,4,5}; // 방법 1
int[] array = {1, 2, 3, 4, 5}; // 방법 2
// 방법 3
int[] array = new int[5];
array[0] = 1;
array[1] = 2;
array[2] = 3;
array[3] = 4;
array[4] = 5;
// 방법 4
int[] array = new int[5];
for(int i=0;i<5;i++) {
array[i]=i+1;
}
- 5칸짜리 int형 배열 생성 및 0번째 index부터 순서대로 1,2,3,4,5를 넣어주는 방법 4가지
배열 출력 방법
// for문 사용
for(int i=0;i<5;i++) {
System.out.print(array[i]);
}
// foreach문 사용
for(int num : array) {
System.out.print(num);
}
- for, foreach를 사용해 배열 출력 시 결과 => 12345
- 1차원 배열이 아닌 2차원 배열이라면 2중 for문을 사용하여 출력
- for, foreach를 사용하지 않고 java.util.Arrays를 사용하는 방법은 아래에서 설명
1차원 배열 길이 구하기
array.length
1차원 배열 복사
System.arraycopy(array1, index1, array2, index2, num);
- array1 : 복사할 배열
- index1 : array1의 시작 index
- array2 : 복사한 값들을 넣을 배열
- index2 : array2의 시작 index
- num : 복사할 갯수
2차원 배열 생성 (int 형)
int[][] array = new int[5][5]; // 방법 1
int array[][] = new int[5][5]; // 방법 2
- 5 * 5 int형 배열 생성
2차원 배열 생성 및 초기값 지정
int array[][] = new int [][] {{1,2,3},{4,5,6},{7,8,9}};
- 2차원 배열도 1차원 배열과 마찬가지로 하나씩 값을 넣어주거나 for문을 이용해 값을 넣어주는 방법 외에도 위 방법처럼 초기값을 지정해 줄 수 있음
2차원 배열 길이 구하기
- 2 * 3 size의 2차원 배열의 길이를 구하는 경우
System.out.println(array.length); // 2 출력
System.out.println(array[0].length); // 3 출력
- 이와 같은 방식으로 3차원 이상의 배열의 길이도 구할 수 있음
java.util.Arrays 패키지 사용
import java.util.Arrays;
- 여기서부터는 java.util.Arrays 패키지를 import 해줘야 사용가능한 기능들
- 모두 1차원 배열을 기준으로 사용해야 함
배열 출력 => Arrays.toString()
int[] arr = new int[] {1,2,3,4,5};
System.out.println(Arrays.toString(arr));
- Arrays.toString() 메소드를 사용한 배열 출력 시 결과 => [1, 2, 3, 4, 5] 출력
배열 정렬 => Arrays.sort() 메소드 사용
Arrays.sort(arr);
- Arrays 패키지에서 제공해주는 정렬 기능 (오름차순 정렬)
- 듀얼 피봇 퀵정렬 방식을 사용해서 시간복잡도는 평균 : O(nlogn), 최악 : O(n^2)으로 퀵정렬보다 더 빠른 알고리즘을 사용한다고 함
배열 검색 => Arrays.binarySerach()
Arrays.binarySearch(arr,3)
- arr 배열에서 숫자 3이 들어가있는 index인 2를 return
- 주의해야할 점은 arr 배열이 오름차순 정렬 되어 있어야 함 => 2진 탐색을 사용하기 때문
- 오름차순 정렬이 되어있기 때문에 찾고자 하는 값이 배열안에 없다면 어디에 들어갈지 음수값으로 return
- ex) 0번째 index 값보다 작으면 -1 return, 0번째 index값보다 크고 1번째 index 값보다 작으면 -2 return, ....
배열 비교 => Arrays.equals()
Arrays.equals(arr,brr)
- 배열 arr과 brr이 같으면 true, 다르면 false를 return
배열 채우기 => Arrays.fill()
Arrays.fill(arr,1);
- 1차원 배열 arr을 모두 1로 채워줌 => 배열 초기화 할 때 유용
반응형
'JAVA > 기본 문법' 카테고리의 다른 글
[JAVA] 접근 제한자, 정보은닉, Static, psvm (0) | 2021.08.17 |
---|---|
[JAVA] 얕은 복사(Shallow Copy), 깊은 복사(Deep Copy) (0) | 2021.08.16 |
[JAVA] 클래스와 객체 (+ 생성자, this, 객체 배열 사용법) (0) | 2021.08.16 |
[JAVA] 문자열(String) 관련 메소드 정리 + 형변환 (0) | 2021.08.14 |
[JAVA] Hello, World! (Eclipse) (0) | 2021.08.10 |