쌓고 쌓다
[JAVA] 배열 선언 및 초기화 방법 정리 본문
* 일차원 배열
선언 및 생성 방법
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 레퍼런스도 가리키게 된다.
'프로그래밍 > 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