배열 만들기
- 배열 생성 시 배열 타입에 대한 default 값으로 초기화
배열 초기값
자료형 | 초기값 |
int | 0 |
double | 0.0 |
char | '0' |
boolean | false |
String | null |
사용자 정의 class | null |
생성과 동시에 값 할당하기
int[] b = new int[] {1, 3, 5}; // new int[] 는 생략 가능
int[] b = {1, 3, 5};
주의 사항
선언과 생성을 따로 하는 경우
- 초기화할 때 꼭 'new T[ ]'를 같이 적어줘야 한다.
// X
int[] a;
a = {1, 3, 5}; // 컴파일오류, Array constants can only be used in initializers 이 에러 문구 나옴.
// O
int[] a;
a = new int[]{1, 3, 5};
* Array is Immutable
- 배열은 변경 불가능하다.
- 즉 배열은 최초 메모리 할당 이후 변경할 수 없음.
- 아래 코드와 그림을 같이 보자.
// a는 엄밀히 말해서 배열이 아니고, 배열을 가리키고 있는 레퍼런스 타입의 변수
int[] a = {1, 2, 3};
// a라는 변수에 새로운 값을 할당한 것.
a = new int[]{4, 5, 6, 7};
- 0X100 배열이 바뀐게 아니라 a가 가리키는 배열을 0X200으로 바꾼 것이다.
다차원 배열
int a;
int[] arr;
int[][] arr2;
- a의 타입 : int
- arr의 타입 : int의 배열
- arr이 저장하는 데이터의 타입 : int
- arr2의 타입 : int의 2차원 배열
- arr2에 저장하는 데이터의 타입 : int의 배열
2차원 배열 동시에 선언, 생성, 할당
int[][] arr = {{0, 1, 2}, {0, 1, 2}, {0, 1, 2}, {0, 1, 2}};
✔️ 4 X ? , 2차원 배열 만들기
- 배열이 꼭 정사각형일 필요는 없다.
// 1, 2차 배열 선언 & 1차 배열 생성
int[][] arr = new int[4][];
// 1차 배열만 생성 후, 2차 배열 생성
arr[0] = new int[2];
arr[1] = new int[3];
arr[2] = {1, 2, 3}; // X
arr[2] = new int[] {1, 2, 3}; // O
✔️배열 생성이 올바르지 않은 것 찾기
int arr[][] = new int[2][3]; // O
int[] arr[] = new int[2][3]; // O
int[][] arr = new int[2][3]; // O
int[][] arr = new int[4]{1, 2}; // X, error 발생
int[][] arr = new int[][] {{2, 3}, {0, 1}}; // O
int[][] arr = {{2, 3}, {0, 1}}; // O
✔️2차원 배열의 메모리 사용
'Java' 카테고리의 다른 글
[Java 05] 객체 비교 - equals(), Comparable (0) | 2023.08.09 |
---|---|
[Java 04] 객체와 상속 (0) | 2023.08.08 |
[Java 03] 객체지향 프로그래밍 1 - 객체, 클래스, OOP란? (0) | 2023.07.20 |
[Java 01] 연산자 우선 순위 (0) | 2023.07.18 |
[Java 00] 변수와 타입 (0) | 2023.07.18 |