2021. 8. 8. 02:18ㆍProgramming Language/Java
1. 개요 및 네이밍
2. 선언 및 초기화
3. 다차원 배열
4. API
참고
1. https://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html
3.http://tcpschool.com/java/java_array_oneDimensional
1. 개요 및 네이밍
배열 : 고정된 갯수의, 한가지 타입의 값들을 묶는 컨테이너 객체. (오라클 자바 튜토리얼 정의 : An array is a container object that holds a fixed number of values of a single type.)
배열 내의 각각 요소들을 인덱스로 접근할 수 있음.
네이밍은 ~s 로 주로 표현.
byte[] anArrayOfBytes;
short[] anArrayOfShorts;
long[] anArrayOfLongs;
float[] anArrayOfFloats;
double[] anArrayOfDoubles;
boolean[] anArrayOfBooleans;
char[] anArrayOfChars;
String[] anArrayOfStrings;
2. 선언 및 생성, 초기화
가. new를 사용하는 방법
선언.
int [] numbers;
int numbers[];
// 1번의 방법으로 선언하는 것을 권장.
이후 배열 생성.
numbers = new int[10];
선언과 동시에 배열 생성을 할 수도 있음.
int []numbers = new int[10];
따로 초기화를 해주지 않을 경우, 0, null(참조 자료형의 경우), false로 초기화 됨.
나. new를 사용하지 않는 방법 (중괄호를 사용하여 초기화)
int [] numbers = {1, 2, 10, 300};
이 경우, 반드시 선언과 초기화를 동시에 해 주어야 한다. 즉 다음은 불가능하다.
int [] numbers;
numbers = {1, 2, 30, 100}; // 에러!
이렇게 중괄호를 사용하여 초기화를 해주는 경우는, 주로 변경되지 않는 값을 지정할 때 static으로 묶어서 사용한다.
public class Days {
static String [] month = {
"January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"
};
...
}
3. 다차원 배열
선언
int [] twoDim[];
int twoDim[][];
생성의 경우,
twoDim = new int[2][3]; // 가능
twoDim = new int[][]; // 불가
twoDim = new int[][3]; // 불가
twoDim = new int[2][]; // 가능, 아래와 같이 행마다 다른 길이의 배열을 생성할 수 있음(가변 배열)
twoDim[0] = new int[3];
twoDim[1] = new int[2];
선언 즉시 초기화
int [][]twoDim = {{1, 2, 3}, {4, 5, 6}};
int [][]dynamicDim = {{1}, {2, 3}, {4, 5, 6}} // 가변 배열
4. API
배열을 다루면서 정렬, 탐색, 복사 등을 수행할 일이 많을 것이다. 이때, 유용하게 사용할 수 있는 클래스가 java.util.Arrays 클래스다.
java.util.Arrays에선 배열을 쉽게 다루기 위한 다양한 메서드들을 제공하는데, 이진 탐색, 범위 복사, 값 채우기, 정렬 등 유용한 메서드들을 많이 제공한다. 메서드들이 대부분 static이라, API 문서 쭉 읽어보면서 메서드들 눈에 익힌 다음 필요시 바로 바로 쓰면 될 듯 하다.
https://docs.oracle.com/javase/8/docs/api/java/util/Arrays.html
'Programming Language > Java' 카테고리의 다른 글
JVM의 Garbage Collection 과정 (0) | 2021.08.20 |
---|---|
[String] equals 메서드와 == 연산의 차이 (0) | 2021.08.19 |
자바의 스택 / 프레임 구조 (0) | 2021.08.13 |
자바의 접근 제어자 (0) | 2021.08.11 |
자바의 참조 변수(Reference Type) (0) | 2021.08.10 |