이 글은 남궁성 님의 "자바의 정석: 기초편" 책을 읽고 정리한 내용입니다.
배열이란?
"같은 타입의 여러 변수를 하나의 묶음으로 다루는 것"
배열은 각 저장공간이 연속적으로 배치되어 있다.
int[] score; //배열 선언
score = new int[5]; //배열 생성
arr.length //배열의 길이이며 상수이다.
배열의 유효한 인덱스 범위가 아닌 인덱스로 접근하면 ArrayIndexOutOfBoundsException 예외가 발생한다.
배열 초기화
int[] score = new int[]{10, 20, 30};
int[] score = {10, 20, 30};
선언과 생성을 따로 하면 new int[] 생략 불가능
int[] score;
score = {10, 20, 30}; // 에러
score = new int[]{10, 20, 30};
배열의 출력
int[] arr = {10, 20, 30};
System.out.println(Arrays.toString(arr)); // [10, 20, 30]
System.out.println(arr); // [I@3ac3fd8b
char[] chars = {'a', 'b', 'c'};
System.out.println(chars); // abc
변수의 타입에 따른 기본값
자료형 | 기본값 |
boolean | false |
char | '\u0000' |
byte, short, int | 0 |
log | 0.0L |
float | 0.0f |
double | 0.0d 또는 0.0 |
참조형 | null |
String 배열
String[] name = new String[3]; // 참조형 변수의 기본값은 null이므로 null로 초기화
String 클래스는 char 배열에 기능(메서드)를 추가하여 확장한 것
String은 읽을 수만 있을 뿐 내용은 변경할 수 없다.
메서드 |
char charAt(int index) |
int length() |
String substring(int from, int to) |
boolean equals(Object obj) |
char[] toCharArray() |
2차원 배열
int[][] arr = {
{1, 2, 3},
{4, 5, 6}
};
Arrays 클래스
배열의 출력
Arrays.toString(일차원 배열) : [0, 1, 2, 3, 4]
Arrays.deepToString(다차원 배열) : [[1, 2, 3], [4, 5, 6]]
int[] arr = {0, 1, 2, 3, 4};
int[][] arr2D = {
{1, 2, 3},
{4, 5, 6}
};
System.out.println(Arrays.toString(arr));
System.out.println(Arrays.deepToString(arr2D));
[0, 1, 2, 3, 4]
[[1, 2, 3], [4, 5, 6]]
배열의 비교
Arrays.equals(일차원 배열, 일차원 배열) : 배열에 저장된 모든 요소를 비교해서 같으면 true, 다르면 false
Arrays.deepEquals(다차원 배열, 다차원 배열) : 배열에 저장된 모든 요소를 비교해서 같으면 true, 다르면 false
배열의 복사
Arrays.copyOf(int[] original, int newLength)
Arrays.copyOfRange(int[] original, int from, int to)
int[] arr = {0,1,2,3,4};
int[] arr2 = Arrays.copyOf(arr, arr.length); // arr2 = {0,1,2,3,4}
int[] arr3 = Arrays.copyOf(arr, 3); // arr3 = {0,1,2}
int[] arr4 = Arrays.copyOf(arr, 7); // arr4 = {0,1,2,3,4,0,0}
int[] arr5 = Arrays.copyOfRange(arr, 2, 4); // arr5 = {2,3}
int[] arr6 = Arrays.copyOfRange(arr, 0, 7); // arr6 = {0,1,2,3,4,0,0}
배열의 정렬
Arrays.sort(배열)
'Programming > JAVA' 카테고리의 다른 글
자바의 정석 7장 : 객체 지향 프로그래밍2 (0) | 2022.12.18 |
---|---|
자바의 정석 6장 : 객체 지향 프로그래밍1 (0) | 2022.12.15 |
자바의 정석 3~4장 : 연산자, 조건문과 반복문 (0) | 2022.12.13 |
자바의 정석 2장 : 변수 (0) | 2022.12.13 |
자바의 정석 1장 : 자바를 시작하기 전에 (0) | 2022.12.10 |