[Java] 배열(Array)
배열(Array)
📌 배열(Array)
: 자료형이 같은 둘 이상의 값을 저장할 수 있는 메모리 공간.
연속된 자료구조.
📌 자바에서는 배열도 인스턴스임.
1차원배열
📌 1차원 배열
: 자료형이 같은 둘 이상의 값을 저장할 수 있는 1차원 구조의 메모리 공간.
예. int[ ] nums = new int[10];
📌 선언하는 방법
int[] arr = new int[5]; // 길이가 5인 int형 1차원 배열 생성.
int arr[] = new int[5]; // 길이가 5인 int형 1차원 배열 생성.
📌 생성과 동시에 초기화 가능.
int[] arr = new int[] {1, 2, 3}; // 생성과 동시에 초기화 가능.
int[] arr = {1, 2, 3}; // 위의 코드를 줄여서 다음과 같이 사용 가능.
📌 초기화 하지 않을 경우, 0 또는 null로 초기화됨.
📌 인덱스로 각각의 값에 접근 가능. (인덱스는 0부터 시작.)
💡 .length
: 배열 길이 반환.
📌 public static void fill(int[] a, int val)
: a 배열 val로 초기화.
📌 public static void fill(int[] a, int fromIndex, int toIndex, int val)
: fromIndex부터 toIndex 전까지 val로 배열 초기화.
📌 public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
: src 배열의 srcPos인덱스의 값을 dest 배열의 desPos인덱스부터 length만큼 복사.
📌 객체 배열의 복사
객체 배열을 arrqycopy()로 복사할 경우, 얕은 복사를 하게 됨.
→ (System.arraycopy(arr1, arr2)를 했다고 했을 때,)
주솟값을 복사하기 때문에 arr1과 arr2가 같은 주솟값을 가지게 되면서,
하나의 값을 변경하면 arr1과 arr2가 같이 변경이 됨.
이를 해결하려면 깊은 복사를 해야 함.
깊은 복사는 객체를 새로 생성한 후, 값을 하나씩 대입하는 것을 말함.
📌 enhanced for문
for([요소] : [배열]) {
...
}
2차원 배열
📌 2차원 배열
: 자료형이 같은 둘 이상의 값을 저장할 수 있는 2차원 구조의 메모리 공간.
📌 선언하는 방법
int[][] arr = new int[2][3]; // 세로 길이가 2, 가로 길이가 3인 int형 2차원 배열 생성.
📌 1차원 배열과 같이 {} 사용해 생성과 동시에 초기화 가능.
📌 초기화 하지 않을 경우, 0 또는 null로 초기화됨.
📌 인덱스로 각각의 값에 접근 가능. (인덱스는 0부터 시작.)
int[][] arr2 = {
{1, 2, 3},
{4, 5, 6}
};
// arr[0][0] = 1 arr[0][1] = 2 arr[0][2] = 3
// arr[1][0] = 4 arr[1][1] = 5 arr[1][2] = 6
0 | 1 | 2 | |
0 | 1 | 2 | 3 |
1 | 4 | 5 | 6 |
배열 - 예시
📄 배열 - 예시
package array;
public class array {
public static void main(String[] args) {
// 1차원 배열.(int)
int[] arr = {1, 2, 3, 4, 5};
for(int i : arr) {
System.out.println(i);
}
// 1차원 배열.(char)
char[] arr2 = new char[26];
char ch = 'A';
for(int i = 0; i < arr2.length; i++, ch++) {
arr2[i] = ch;
}
for(int i = 0;i < arr2.length; i++) {
System.out.print(arr2[i]);
}
System.out.println();
// 2차원 배열.
int[][] arr3 = {
{1, 2, 3},
{4, 5, 6}
};
for(int i = 0; i < 2; i++) {
for(int j = 0; j < 3; j++) {
System.out.print("arr2[" + i + "][" + j + "] = " + arr3[i][j] + " ");
}
System.out.println("");
}
}
}
// 1
// 2
// 3
// 4
// 5
// ABCDEFGHIJKLMNOPQRSTUVWXYZ
// arr2[0][0] = 1 arr2[0][1] = 2 arr2[0][2] = 3
// arr2[1][0] = 4 arr2[1][1] = 5 arr2[1][2] = 6