배열은 요소를 순서대로 모아서 관리하기 위해 만들어진 자료구조
배열은 요소를 순서대로 모아서 관리하기 위해 만들어진 자료구조입니다. 인덱스라고 부르는 정수로 만들어진 위치를 사용하여 배열내 각각의 요소에 액세스 할 수 있습니다.
배열은 임의 접근(Random Access)를 허용합니다. 이는 프로그램의 배열의 요소에 순서와 관계없이 빠르게 액세스 할 수 있음을 의미합니다.
type[] arrayName;
는 가능하나,
type[3] arrayName;
는 불가능 하다. 초기화가 안된 곳을 할당할 수는 없기 때문에. 배열을 선언하며 배열의 크기를 지정할 수는 없습니다.
자바에서 2차원 배열은 비정방형 배열이 가능하다.
2차원 이상의 배열은 한 배열에 여러 배열이 포함되어 있는 형태
public class sample {
public static void main(String[] args) {
int [][] matrix = {
{0,0,0},
{1,1,1}
};
System.out.println(matrix.length);
for(int i=0; i<matrix.length; i++) {
for(int j=0; j< matrix[i].length; j++) {
System.out.println(matrix[i][j]);
}
}
}
}
배열 내 잘못된 위치에 대한 접근은 ArrayIndexOutofBoundsException 예외를 발생
int[] row = new int[2];
ArrayList list = new ArrayList();
list.add(“문자열”); // 문자열 추가
list.add(99); // 정수형 추가
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
int[] array = new int[3];
System.out.println(array[0]);
실행시 0 출력됨
int[] array = {1,2,3};
도 가능
String 배열에는 null 이 기본값으로 들어감.
int[] data1 = new int[] {1,2,3,4}; // 허용
int[] data2 = {1,2,3,4}; // 허용
data2 = new int[] {5,6,7,8}; // 허용
data2 = {9,10,11,12}; // 허용되지 않음
int[][] grid = new int[][] {
{1,2,3,4}, // grid[0] 배열
{5,6,7,8} // grid[1] 배열
};
int[][] grid = new int[][] {
{1,2,3,4},
{5,6,7},
{8,9,10,11,12}
};
int[] row = {1,2,3,4};
int[] row2 = row.clone();
위 코드가 실행된 후의 메모리 구조는 아래와 같습니다.
int[] array = {9,8,7,6,5,4,3,2,1};
Arrays.sort(array);
binarySearch – 전달받은 배열에서 특정 객체의 위치를 이진 검색 알고리즘을 검색한 후, 위치를 반환
int[] array = {1,2,3,4,5,6,7,8,9};
int index = Arrays.binarySearch(array, 7); // 6을 반환
copyOf – 전달받은 원본 배열과 복사할 요소의 개수와 같은 원본 배열과 같은 타입의 새 배열을 return
int[] array = {1,2,3,4,5,6,7,8,9};
int[] copyFromCopyOf = Arrays.copyOf(array, 3); // {1,2,3} 을 반환
coyOfRange – 전달받은 원본 배열과 복사 시작 인덱스 및 복사 끝 인덱스로 원본 배열 범위 내의 요소를 복사하여 같은 타입의 새 배열 반환
int[] array = {1,2,3,4,5,6,7,8,9};
int[] copyFromCopyOfRange = Arrays.copyOfRange(array, 3, 5);
fill – 배열의 모든 요소를 특정 값으로 초기화
int[] array = {1,2,3,4,5,6,7,8,9};
Arrays.fill(array, 10);
static int[] createArray(int size) {
return new int[size];
}
class Example {
public static void main(String[] args) {
int[] argument = {1, 2, 3, 4};
chahgeArrayElement(argument);
System.out.println(argument[0]);
}
static void changeArrayElement(int[] parameter) {
parameter[0]++;
}
}
class Example {
public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
System.out.println(args[i]);
}
}
}
main 함수의 args 사용
배열 인덱스 끝날때를 대비해 예외처리를 해줘야 한다.
전체 다 출력 시 매우 유용. 이를 이용해 값을 수정할 수는 없다.
for (int[] innerArray: array) {
for (int element: innerArray) {
System.out.print(element + " ");
}
}