쌓고 쌓다

[JAVA] 배열 선언 및 초기화 방법 정리 본문

프로그래밍/java

[JAVA] 배열 선언 및 초기화 방법 정리

승민아 2021. 12. 18. 22:57

* 일차원 배열

선언 및 생성 방법

int arr[] = new int[10];
int[] arr = new int[10];

둘 다 동일한 선언 방법입니다.

자바에서의 배열 생성은 C/C++과 달리  두 단계가 존재합니다.

 

 

 

1. 배열에 대한 레퍼런스 변수 선언

 

배열 선언 시 []에 크기를 지정해선 안됩니다.

int arr[]; // 정상 작동
int arr[5]; // 컴파일 오류

 

 

2. 배열 생성

 

 

초기화 방법

1. 선언과 동시에 초기화

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

 

2. for문을 이용한 초기화

 

여기서 알아야할게

자바에서 배열을 객체로 다룸으로써, 배열의 크기 값을 가진 length 필드가 존재한다는 꿀팁이다.

int arr[] = new int[5];

for(int i=0;i<5;i++)
	arr[i]=i;
    
for(int i=0;i<arr.length;i++) // length를 이용한 방법
	arr[i]=i;

 

* 다차원 배열

 

선언 및 생성 방법

int arr[][] = new arr[2][5]; // 2행 5열읠 2차원 배열 생성

int [][]arr2 = new arr[2][5]; // 일차원과 마찬가지로 위와 동일 하다

 

 

2차원 배열에서 행의 각 원소는 1차원 배열에 대한 레퍼런스가 된다. 

int arr[][] = new int[2][5];
int length1 = arr.length; // length1는 2를 가짐
int length2 = arr[0].length; // length2는 5를 가짐
int length3 = arr[1].length; // length3는 5를 가짐

초기화 방법

1. 선언과 동시에 초기화

int arr[][] = { {0,1}, {2,3}, {4,5}, {6,7} }; //4행 2열 배열

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

 

2. for문을 이용한 초기화

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

//초기화 방법1
for(int i=0;i<4;i++)
   for(int j=0;j<2;j++)
       arr[i][j]=i+j;


 // length 필드를 이용한 초기화, 위와 같다.
for(int i=0;i<arr.length;i++)
   for(int j=0;j<arr[i].length;j++)
       arr[i][j]=i+j;

 

 

 

비정방형 배열이라고 행마다 열의 개수가 다른 배열이 있다.

int arr[][];
arr = new int[5][];
arr[0] = new int[1];
arr[1] = new int[2];
arr[2] = new int[3];
arr[3] = new int[4];

이런 식으로 선언을 하면 아래와 같은 구조가 완성된다.

int a = arr[0].length // a에는 1
int b = arr[1].length // b에는 2
int c = arr[2].length // c에는 3
int d = arr[3].length // d에는 4
int e = arr[4].length // e에는 5 가 담긴다.

 

비정방형 배열을 생성과 동시에 초기화

int arr[][] = { {0}, {1,2}, {3,4,5}, {6,7,8,9} };

메소드에서 배열을 반환

 

package com.company;

public class Main {

    static int[] makeArray()
    {
        int arr[] = new int[5]; // new로 할당받은 배열 메모리는 사라지지 않고 지역변수인 arr만 소멸
        for(int i=0;i<5;i++)
            arr[i]=i;
        return arr; // 배열을 반환하면 그 배열에 대한 레퍼런스가 반환되는것이다
    }

    public static void main(String[] args) {

        int res[] = makeArray();
        for(int i=0;i<5;i++)
            System.out.print(res[i]+" ");

    }
}

이런 식으로 arr이 가리키던 레퍼런스와 똑같이 res 레퍼런스도 가리키게 된다.

0~4를 출력하는것을 볼수있다.

'프로그래밍 > java' 카테고리의 다른 글

[JAVA] this 와 this()  (0) 2021.12.21
[JAVA] 생성자  (0) 2021.12.20
[JAVA] 클래스와 객체  (0) 2021.12.20
[JAVA] for-each 문  (0) 2021.12.19
[JAVA] 예외 처리  (0) 2021.12.19
Comments