

2022.09.01 java 배열java2022. 9. 4. 23:48
Table of Contents
배열
같은 타입의 변수들로 이루어진 유한 집합
배열의 값을 '요소'라고 하며 위치를 가리키는 숫자를 '인덱스'라고 한다.
자바의 인덱스는 0부터 시작한다.
1차원 배열
선언
타입[] 배열이름;
타입 배열이름[];
//ex)
int[] arr;
int arr[];
- 단순 배열 선언
생성
배열이름 = new타입[배열길이];
타입[] 배열이름 = new타입[배열길이];
//ex)
arr = new int[10];
int[] arr = new int[5];
- 대괄호 안에 길이를 지정하여 배열을 생성
초기화
인덱스를 이용한 초기화
int[] arr = new int[5]; //길이가 5인 int형 배열 생성
arr[0] = 10; //인덱스를 이용한 배열 초기화
arr[1] = 20; //인덱스1에 20 저장
arr[2] = 30;
arr[3] = 40;
arr[4] = 50;
System.out.println(Arrays.toString(arr)); //[10, 20, 30, 40, 50]
- 배열이름[인덱스값] = 저장할 값;
- 배열의 길이를 초과하는 인덱스를 사용하면 예외 발생
선언과 동시에 초기화
타입[] 배열이름 = new 타입이름[] {배열요소1,배열요소2,...};
타입[] 배열이름 = {배열요소1,배열요소2,...};
ex)
int[] arr = new int[]{1,2,3,4,5}; //[1,2,3,4,5]
int[] arr2 = {1,2,3,4,5}; //[1,2,3,4,5]
- 괄호를 사용하여 선언과 동시에 초기화
- 배열의 요소만큼 길이가 설정
2차원 배열
선언
타입[][] 변수이름;
변수이름 = new 타입[외부배열크기][내부배열크기]
ex)
int[][] arr;
arr = new int[3][5];
- 외부배열은 세로, 내부배열은 가로
선언과 동시에 초기화
타입[][] 변수이름 = new 타입[외부배열크기][내부배열크기];
ex)
int[][] arr = new int[3][5]; //세로가 3 가로가 5인 int형 2차원 배열 선언
//값을 넣어 초기화하는 경우
int[][] arr = new int[][]{
{11,22,33,44}, //세로 3 가로 4인 int형 2차원배열 선언
{55,66,77,88}, //new int[3][4]와 동일
{99,110,121,132}
};
System.out.println(Arrays.deepToString(arr));
System.out.println(arr[0][0]);
System.out.println(arr[1][1]);
System.out.println(arr[2][2]);
//출력값
[[11, 22, 33, 44], [55, 66, 77, 88], [99, 110, 121, 132]]
11
66
121
- 1차원 배열처럼 인덱스에 접근하여 요소 저장 가능
- 2차원 배열 전체를 출력할 땐 deepToString(배열이름)
가변 배열
2차원 이상의 다차원 배열을 생성할 때 마지막 차수의 길이를 명시하지 않고 자유로운 형태의 배열을 생성
선언
타입[][] 변수이름 = new 타입[외부배열크기][];
ex)
int[][] arr = new int[3][];
- 마지막 차수의 길이를 명시하지 않음
생성
int[][] arr = new int[3][];
arr[0] = new int[3]; //인덱스0 행의 열은 3
arr[1] = new int[4]; //인덱스1 행의 열은 4
arr[2] = new int[5]; //인덱스2 행의 열은 5
System.out.println(Arrays.toString(arr[0]);
System.out.println(Arrays.toString(arr[1]);
System.out.println(Arrays.toString(arr[2]);
//출력값
[0, 0, 0]
[0, 0, 0, 0]
[0, 0, 0, 0, 0]
- 각 행과 열의 크기가 자유로움
- 변수이름[행 인덱스] = new 타입[열 크기]
생성과 동시에 초기화
int[][] arr = {
{11,22,33},
{44,55,66,77},
{88,99,110,121,132}
};
System.out.println(Arrays.toString(arr[0]);
System.out.println(Arrays.toString(arr[1]);
System.out.println(Arrays.toString(arr[2]);
배열 복사 명령어
System.arraycopy() - 배열 복사
System.arraycopy(원본배열, 원본 배열의 복사위치, 붙여넣을 배열, 붙여넣을 배열의 시작 위치, 복사할 개수);
ex)
int[] a = {1,2,3,4,5};
int[] b = new int[5];
System.arraycopy(a, 0, b, 0, a.length);
//a의 인덱스 0부터 a의 길이만큼 복사하여 b의 처음부터 붙여넣기
System.out.println(Arrays.toString(b));
//출력값
[1, 2, 3, 4, 5]
- 원본 배열에서 복사할 시작, 끝 위치, 개수를 지정할 수 있음
- 붙여 넣을 배열의 시작 위치를 지정할 수 있음
Arrays.copyOf() - 배열 복사
Arrays.copyOf(원본 배열, 복사할 길이);
ex)
int[] a = {1, 2, 3, 4, 5};
int[] b;
b = Arrays.copyOf(a, 3); //a배열의 인덱스0부터 3개 복사
System.out.println(Arrays.toString(b));
//출력값
[1, 2, 3]
- 시작 위치 및 붙여 넣을 위치를 지정하지 못 함
- 인덱스 0부터 지정된 길이까지 그대로 복사
'java' 카테고리의 다른 글
비동기 처리 - @Async (2) | 2024.08.16 |
---|---|
Java의 병렬 처리를 알아보자 - Parallel Stream(병렬 스트림) (1) | 2024.08.02 |
2022.08.31 java 제어문 (0) | 2022.09.04 |
2022.08.30 Java 변수 타입 문자열 (0) | 2022.09.04 |

@Han_5ung :: 한성 개인 기록장
IT
github : https://github.com/HanSungHyeon