배열

Moom2n·2024년 2월 27일
0

Java

목록 보기
6/26

배열 개요

- 배열이란?

배열은 요소를 순서대로 모아서 관리하기 위해 만들어진 자료구조

배열은 요소를 순서대로 모아서 관리하기 위해 만들어진 자료구조입니다. 인덱스라고 부르는 정수로 만들어진 위치를 사용하여 배열내 각각의 요소에 액세스 할 수 있습니다.

배열은 임의 접근(Random Access)를 허용합니다. 이는 프로그램의 배열의 요소에 순서와 관계없이 빠르게 액세스 할 수 있음을 의미합니다.

- Java에서 배열 표기법

type[] arrayName; 는 가능하나,

type[3] arrayName; 는 불가능 하다. 초기화가 안된 곳을 할당할 수는 없기 때문에. 배열을 선언하며 배열의 크기를 지정할 수는 없습니다.

- 배열의 차원

자바에서 2차원 배열은 비정방형 배열이 가능하다.
2차원 이상의 배열은 한 배열에 여러 배열이 포함되어 있는 형태

- 배열 요소에 접근

public class sample {
    public static void main(String[] args) {
        int [][] matrix = {
            {0,0,0},
            {1,1,1}
        };

        System.out.println(matrix.length);

        for(int i=0; i<matrix.length; i++) {
            for(int j=0; j< matrix[i].length; j++) {
                System.out.println(matrix[i][j]);
            }
        }
    }
}

- 배열의 경계 검사

배열 내 잘못된 위치에 대한 접근은 ArrayIndexOutofBoundsException 예외를 발생

- 배열과 컬렉션 비교

int[] row = new int[2];
  • 배열 :
    크기를 조절할 수 없음
    배열은 같은 타입의 요소를 저장하기 위한 자료구조
    배열의 요소는 읽기 전용 액세스 권한을 가질 수 없음
    일반적으로, 배열은 빠르지만 유연성이 떨어짐
ArrayList list = new ArrayList();
list.add(“문자열”);	    // 문자열 추가
list.add(99); 	        // 정수형 추가

for (int i = 0; i < list.size(); i++) {
    System.out.println(list.get(i));
}
  • 컬렉션 :
    ArrayList와 같은 컬렉션 클래스는 크기를 조절할 수 있음
    다양한 타입의 요소를 저장하기 위해 설계됨
    컬렉션의 요소는 읽기 전용이 가능
    컬렉션은 배열에 비해 느리지만 보다 유연함

배열 생성

- 배열 인스턴스 생성

    int[] array = new int[3];
    System.out.println(array[0]);

실행시 0 출력됨

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

도 가능

String 배열에는 null 이 기본값으로 들어감.

- 배열 요소 초기화

int[] data1 = new int[] {1,2,3,4};	// 허용
int[] data2 = {1,2,3,4};	    	// 허용
data2 = new int[] {5,6,7,8};		// 허용
data2 = {9,10,11,12};			    // 허용되지 않음

- 다차원 배열 요소 초기화

int[][] grid = new int[][] {
    {1,2,3,4},  // grid[0] 배열
    {5,6,7,8}   // grid[1] 배열
};

- 가변 길이 배열

int[][] grid = new int[][] {
    {1,2,3,4},
    {5,6,7},
    {8,9,10,11,12}
};

- 배열 요소 복사


배열 사용

- 배열의 크기

- 배열 메소드

  • clone 메소드
int[] row = {1,2,3,4};
int[] row2 = row.clone();

위 코드가 실행된 후의 메모리 구조는 아래와 같습니다.

  • java.util.Array 클래스의 메소드
  • sort – 전달받은 배열의 모든 요소를 오름차순 정렬
int[] array = {9,8,7,6,5,4,3,2,1};
Arrays.sort(array);

binarySearch – 전달받은 배열에서 특정 객체의 위치를 이진 검색 알고리즘을 검색한 후, 위치를 반환

int[] array = {1,2,3,4,5,6,7,8,9};
int index = Arrays.binarySearch(array, 7); // 6을 반환

copyOf – 전달받은 원본 배열과 복사할 요소의 개수와 같은 원본 배열과 같은 타입의 새 배열을 return

int[] array = {1,2,3,4,5,6,7,8,9};
int[] copyFromCopyOf = Arrays.copyOf(array, 3); // {1,2,3} 을 반환

coyOfRange – 전달받은 원본 배열과 복사 시작 인덱스 및 복사 끝 인덱스로 원본 배열 범위 내의 요소를 복사하여 같은 타입의 새 배열 반환

int[] array = {1,2,3,4,5,6,7,8,9};
int[] copyFromCopyOfRange = Arrays.copyOfRange(array, 3, 5);

fill – 배열의 모든 요소를 특정 값으로 초기화

int[] array = {1,2,3,4,5,6,7,8,9};
Arrays.fill(array, 10);

- 메소드에서의 배열 return

static int[] createArray(int size) {
    return new int[size];
}

- 배열을 파라미터로 전달

class Example {
    public static void main(String[] args) {
        int[] argument = {1, 2, 3, 4};
        chahgeArrayElement(argument);
        System.out.println(argument[0]);
    }
    static void changeArrayElement(int[] parameter) {
        parameter[0]++;
    }
}

- 명령줄 인자

class Example {
    public static void main(String[] args) {
        for (int i = 0; i < args.length; i++) {
            System.out.println(args[i]);
        }
    }
}

main 함수의 args 사용

- foreach 문에서 배열 사용

배열 인덱스 끝날때를 대비해 예외처리를 해줘야 한다.
전체 다 출력 시 매우 유용. 이를 이용해 값을 수정할 수는 없다.

for (int[] innerArray: array) {
    for (int element: innerArray) {
        System.out.print(element + " ");
    }
}

0개의 댓글

관련 채용 정보