나의개발일지

[java] 배열 본문

기본기를 다지자/자료구조

[java] 배열

아. 이렇게 하면 될거 같은데.. 2025. 2. 11. 00:50
728x90



📌  배열 이란?

자바의 배열(Array)는 동일한 타입의 데이터를 고정된 크기로 저장할 수 있는 자료구조이다. 배열은 인덱스를 사용하여 각 요소에 접근 하며, 인덱스는 0부터 시작한다.

자바에서 배열은 객체로 취급되며, 힙(heap) 메모리 영역에 할당 된다.

 

🔅 숫자(Integer) 배열의 예시

배열은 동일한 타입의 데이터만 저장할 수 있다. 그러므로 아래와 같이 숫자(Integer)배열에 문자열(String)이 들어 갈 수 없다.

 

자바에서 배열은 객체로 취급되며 배열의 첫번째 주소값을 스택 메모리에 저장하며 실제 배열의 데이터는 힙 메모리에 저장 된다.

예를 들어 이러한 참조 주소값을 가지게 된다. [I@7b23ec81  이 주소값은 다 다릅니다.

 

 

 


📌  배열의 특징

  • 동일한 타입의 데이터 저장: 배열은 정수, 문자열, 객체 등 동일한 데이터 타입을 저장할 수 있습니다.
  • 고정된 크기: 배열의 크기는 선언 시 고정되며, 한 번 크기가 설정되면 변경할 수 없습니다.
  • 인덱스를 통한 접근: 배열의 각 요소는 0부터 시작하는 인덱스를 사용해 접근합니다.
  • 객체로 취급: 자바에서 배열은 객체로 취급되며, 참조 타입입니다.

 

 


📌  배열의 선언

배열을 사용하기 위해서는 메모리를 할당하는 선언을 먼저 해야 한다.

 

배열의 선언

배열을 선언 할때는 두가지 방법이 있다.

 

방법 1.

타입 뒤에 []를 사용하는 방식

int[] arr;

 

방법 2.

변수 뒤에 []를 사용하는 방식

int arr[];

 

 

방법 2로 배열을 선언 할때 여러개의 배열이나 변수를 한 문장에 선언 할 수 있지만 가독성이 떨어진다.

int a, arr[], b;

---- 두개가 같은 선언 -----

int a;
int b;
int[] arr;

 

배열의 초기화

배열을 선언할때 초기화를 같이 하는 방법이 있고배열을 선언한 후 값을 입력 하는 방법이 있다.

2차원 이상의 배열은 배열의 크기를동적으로 할당 할 수 있다.

 

✔️ 배열 선언할때 초기화를 같이 하는 방법

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

 

✔️ 배열을 선언후 값을 입력 하는 방법

int[] arr = new int[4];

arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;

// 또는 반복문 사용
for(int i = 1; i <= 4; i++) {
	arr[i] = i;
}

 

✔️ 다차원 배열의 동적 배열 크기 할당

int[][] arr = new int[2][];

int[0] = new int[2];
int[1] = new int[3];

for(int i = 0; i < 2; i++) {
    for(int j = 0; j < arr[i].length; j++) {
		arr[i][j] = j;
	}
}

📌  배열의 사용 예시

import java.util.Arrays;

public class Array {
    public static void main(String[] args) {

        /**************************/
        /*        1차원 배열        */
        /**************************/
        System.out.println("----------------- 1차원 배열 -------------------");

        // 배열 생성 + 초기화
        int[] arr = {10, 20, 30, 40, 50, 60};

        // 배열 생성 후 초기화
        int[] arr2 = new int[6];
        //int arr2[] = new int[6];

        for(int i = 0; i < 6; i++) {
            arr2[i] = ( i + 1 ) * 10;
        }

        // 배열의 주소값 출력
        System.out.println(arr);

        // 배열의 원소 출력
        for(int a : arr) {
            System.out.print(a + " ");
        }
        System.out.println();
        for(int a : arr2) {
            System.out.print(a + " ");
        }
        System.out.println();

        // 배열의 원소 출력 (라이브러리)
        System.out.println(Arrays.toString(arr));


        /**************************/
        /*        2차원 배열        */
        /**************************/
        System.out.println("----------------- 2차원 배열 -------------------");

        // 배열 선언 + 할당
        int[][] array = {{1, 2},{3, 4},{5, 6},{7,8}};

        // 배열 선언 후 할당
        int[][] array2 = new int[4][2];
        int num = 1;
        for(int i = 0; i < 4; i++) {
            for(int j = 0; j < 2; j++) {
                array2[i][j] = num++;
            }
        }

        // 배열 동적 선언 후 할당
        int[][] array3 = new int[4][];
        for(int i = 0; i < 4; i++) {
            array3[i] = new int[i];
            for(int j = 0; j < array3[i].length; j++) {
                array3[i][j] = j;
            }
        }

        // 2차원 배열 출력
        for(int[] a : array) {
            System.out.println(Arrays.toString(a));
        }

        System.out.println();

        for(int[] ar : array2) {
            for(int a : ar) {
                System.out.print(a + " ");
            }
            System.out.println();
        }
        System.out.println();

        for(int[] a : array3) {
            System.out.println(Arrays.toString(a));
        }
        System.out.println();


    }
}

 

 

 


📌  타입별 배열의 초기값

 

분류 타입 초기화
기본 타입 (정수) byte[] 0
char[] '\u000'
short[] 0
int[] 0
long[] 0L
기본 타입 (실수) float[] 0.0F
double[] 0.0
기본 타입 (논리) boolean[] false
참조 타입 String[] null
클래스[] null
인터페이스[] null

 

 

728x90
반응형

'기본기를 다지자 > 자료구조' 카테고리의 다른 글

[java] Map  (1) 2025.03.03
[java] Stack (ArrayDeque)  (0) 2025.02.20
[java] Queue (ArrayDeque)  (0) 2025.02.16
[java] LinkedList  (0) 2025.02.14
[java] ArryaList  (0) 2025.02.13