배열

2021. 8. 8. 02:18Programming Language/Java

1. 개요 및 네이밍

2. 선언 및 초기화

3. 다차원 배열

4. API

 


참고

1. https://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html

2. https://wikidocs.net/206

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

 

Arrays (Java Platform SE 8 )

parallelPrefix public static   void parallelPrefix(T[] array, BinaryOperator  op) Cumulates, in parallel, each element of the given array in place, using the supplied function. For example if the array initially holds [2, 1, 0, 3] and the operation pe

docs.oracle.com