반응형

배열 기본 문법

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로 채워줌 => 배열 초기화 할 때 유용
반응형

↓ 클릭시 이동

복사했습니다!