나의개발일지
[java] 배열 본문
728x90
📌 배열 이란?
자바의 배열(Array)는 동일한 타입의 데이터를 고정된 크기로 저장할 수 있는 자료구조이다. 배열은 인덱스를 사용하여 각 요소에 접근 하며, 인덱스는 0부터 시작한다.
자바에서 배열은 객체로 취급되며, 힙(heap) 메모리 영역에 할당 된다.
🔅 숫자(Integer) 배열의 예시
배열은 동일한 타입의 데이터만 저장할 수 있다. 그러므로 아래와 같이 숫자(Integer)배열에 문자열(String)이 들어 갈 수 없다.
자바에서 배열은 객체로 취급되며 배열의 첫번째 주소값을 스택 메모리에 저장하며 실제 배열의 데이터는 힙 메모리에 저장 된다.
예를 들어 이러한 참조 주소값을 가지게 된다. [I@7b23ec81 이 주소값은 다 다릅니다.
📌 배열의 특징
- 동일한 타입의 데이터 저장: 배열은 정수, 문자열, 객체 등 동일한 데이터 타입을 저장할 수 있습니다.
- 고정된 크기: 배열의 크기는 선언 시 고정되며, 한 번 크기가 설정되면 변경할 수 없습니다.
- 인덱스를 통한 접근: 배열의 각 요소는 0부터 시작하는 인덱스를 사용해 접근합니다.
- 객체로 취급: 자바에서 배열은 객체로 취급되며, 참조 타입입니다.
📌 배열의 선언
배열을 사용하기 위해서는 메모리를 할당하는 선언을 먼저 해야 한다.
배열의 선언
배열을 선언 할때는 두가지 방법이 있다.
방법 1.
타입 뒤에 []를 사용하는 방식
int[] arr;
방법 2.
변수 뒤에 []를 사용하는 방식
int arr[];
방법 2로 배열을 선언 할때 여러개의 배열이나 변수를 한 문장에 선언 할 수 있지만 가독성이 떨어진다.
int a, arr[], b;
---- 두개가 같은 선언 -----
int a;
int b;
int[] arr;
배열의 초기화
배열을 선언할때 초기화를 같이 하는 방법이 있고배열을 선언한 후 값을 입력 하는 방법이 있다.
2차원 이상의 배열은 배열의 크기를동적으로 할당 할 수 있다.
✔️ 배열 선언할때 초기화를 같이 하는 방법
int[] arr = {1, 2, 3, 4};
✔️ 배열을 선언후 값을 입력 하는 방법
int[] arr = new int[4];
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
// 또는 반복문 사용
for(int i = 1; i <= 4; i++) {
arr[i] = i;
}
✔️ 다차원 배열의 동적 배열 크기 할당
int[][] arr = new int[2][];
int[0] = new int[2];
int[1] = new int[3];
for(int i = 0; i < 2; i++) {
for(int j = 0; j < arr[i].length; j++) {
arr[i][j] = j;
}
}
📌 배열의 사용 예시
import java.util.Arrays;
public class Array {
public static void main(String[] args) {
/**************************/
/* 1차원 배열 */
/**************************/
System.out.println("----------------- 1차원 배열 -------------------");
// 배열 생성 + 초기화
int[] arr = {10, 20, 30, 40, 50, 60};
// 배열 생성 후 초기화
int[] arr2 = new int[6];
//int arr2[] = new int[6];
for(int i = 0; i < 6; i++) {
arr2[i] = ( i + 1 ) * 10;
}
// 배열의 주소값 출력
System.out.println(arr);
// 배열의 원소 출력
for(int a : arr) {
System.out.print(a + " ");
}
System.out.println();
for(int a : arr2) {
System.out.print(a + " ");
}
System.out.println();
// 배열의 원소 출력 (라이브러리)
System.out.println(Arrays.toString(arr));
/**************************/
/* 2차원 배열 */
/**************************/
System.out.println("----------------- 2차원 배열 -------------------");
// 배열 선언 + 할당
int[][] array = {{1, 2},{3, 4},{5, 6},{7,8}};
// 배열 선언 후 할당
int[][] array2 = new int[4][2];
int num = 1;
for(int i = 0; i < 4; i++) {
for(int j = 0; j < 2; j++) {
array2[i][j] = num++;
}
}
// 배열 동적 선언 후 할당
int[][] array3 = new int[4][];
for(int i = 0; i < 4; i++) {
array3[i] = new int[i];
for(int j = 0; j < array3[i].length; j++) {
array3[i][j] = j;
}
}
// 2차원 배열 출력
for(int[] a : array) {
System.out.println(Arrays.toString(a));
}
System.out.println();
for(int[] ar : array2) {
for(int a : ar) {
System.out.print(a + " ");
}
System.out.println();
}
System.out.println();
for(int[] a : array3) {
System.out.println(Arrays.toString(a));
}
System.out.println();
}
}
📌 타입별 배열의 초기값
분류 | 타입 | 초기화 |
기본 타입 (정수) | byte[] | 0 |
char[] | '\u000' | |
short[] | 0 | |
int[] | 0 | |
long[] | 0L | |
기본 타입 (실수) | float[] | 0.0F |
double[] | 0.0 | |
기본 타입 (논리) | boolean[] | false |
참조 타입 | String[] | null |
클래스[] | null | |
인터페이스[] | null |
728x90
반응형
'기본기를 다지자 > 자료구조' 카테고리의 다른 글
[java] Map (1) | 2025.03.03 |
---|---|
[java] Stack (ArrayDeque) (0) | 2025.02.20 |
[java] Queue (ArrayDeque) (0) | 2025.02.16 |
[java] LinkedList (0) | 2025.02.14 |
[java] ArryaList (0) | 2025.02.13 |