728x90
배열
@2024.03.14
같은 타입의 변수들로 이루어진 유한 집합인 배열에 대해서 알아보자.
기본형 배열
💡
기본 타입의 변수를 여러 개 선언할 필요가 있을 때 사용
- int[] a = {1,2,3,4,5};
참조형 배열
💡
배열 변수가 참조하는 배열의 공간이 값이 아닌 값을 참조하는 배열
- String[] a = {”대한”, “민국”};
배열 선언
💡
1. 타입[] 변수;
2. 타입 변수[] ;
2. 타입 변수[] ;
배열 초기화
💡
1. 타입[] 변수 = new 타입[배열크기];
변수[인덱스] = 값;
2.
타입[] 변수 = new 타입[] {값 1, 값 2, 값 3, …. , };
3.
타입[] 변수 = {값 1, 값 2, 값 3, …. , };
변수[인덱스] = 값;
2.
타입[] 변수 = new 타입[] {값 1, 값 2, 값 3, …. , };
3.
타입[] 변수 = {값 1, 값 2, 값 3, …. , };
- 타입[] 변수 = null;
변수 = {값 1, 값 2, 값 3, …. , };
→ 변수 선언과 동시에 값을 주는 건 가능하나,
변수를 미리 선언 후 값의 목록을 변수에 대입은 불가능!
- 해결 방법 : 변수 = new 타입[] {값 1, 값 2, 값 3, …. , };
ArrayIndexOutOfBoundsException
💡
선언한 배열의 수보다 더 많은 수의 배열을 사용한 경우 발생하는 에러
배열의 길이
💡
배열은 length 필드를 가지며, 이를 사용해 구한다.
@기본 사용
int size = 배열변수.length;
@기본 사용
int size = 배열변수.length;
이차원 배열
💡
배열을 행과 열로 관리하는 것
- ‘[]’의 수가 차원의 수를 의미
- int [][]a = new int[3][2]
- a[0][1] = 2;
a[1][0] = 7;
a[2][1] = 15;
2차원 배열 선언 및 초기화
💡
1. 타입[][] 변수 = new 타입[1차원 크기][2차원 크기];
변수[인덱스][인덱스] = 값;
2. 타입[][] 변수 = {{값1, 값2, … , }, {값1, 값2, … , }, …. , };
변수[인덱스][인덱스] = 값;
2. 타입[][] 변수 = {{값1, 값2, … , }, {값1, 값2, … , }, …. , };
2차원 가변 배열 선언 및 초기화
💡
타입[][] 변수 = new 타입[행의 수][];
변수[행의 수] = new 타입[열의 수];
변수[행의 수] = new 타입[열의 수];
- 예시
int[][] arr = new int[3][]; arr[0] = new int[3]; arr[1] = new int[4]; arr[2] = new int[]{1,2,3,4,5,6,7};
Arrays 클래스
💡
배열과 관련된 다양한 작업을 수행하기 위한 유틸리티 메서드를 제공하는 유틸리티 클래스
유틸리티
: 프로그램이나 시스템에서 특정 작업을 수행하는 데 도움이 되는 도구나 기능
배열 정렬
Arrays.sort();
// 예시
int[] array = {3, 1, 5, 2, 4};
Arrays.sort(array);
//배열을 오름차순으로 정렬하며 반환값은 없고, 이미 정렬되어있음 {1,2,3,4,5}
배열 검색
Arrays.binarySearch()
// 예시
int[] array = {3, 1, 5, 2, 4};
int index = Arrays.binarySearch(array, 3); //배열에서 3을 검색해서 인덱스 반환
배열 비교
Arrays.equals()
// 예시
int[] array1 = {1, 2, 3};
int[] array2 = {1, 2, 3};
boolean isEqual = Arrays.equals(array1, array2); // 두 배열이 같은지 비교
- 같은 인덱스에 같은 값이 들어가있는지 비교
- int[] array1 = {1, 2, 3};
int[] array2 = {3, 2, 1}; 일때는 false 리턴
- int[] array1 = {1, 2, 3};
배열 복사(깊은복사)
Arrays.copyOf()
Arrays.copyOfRange()
// 예시1
int[] array = {1, 2, 3, 4, 5};
int[] newArray1 = Arrays.copyOf(array, array.length); // 배열을 복사하여 새로운 배열 생성
// 예시2
int[] newArray2 = Arrays.copyOfRange(array, 1, 4); // 배열의 인덱스 1~4까지 요소를 복사하여
// 새로운 배열 생성
배열 출력
Arrays.toString()
// 예시
int[] array = {1, 2, 3, 4, 5};
String arrayString = Array.toString(array); // 배열을 문자열로 변환하여 반환
// [1, 2, 3, 4, 5] 출력
배열 비교
Arrays.compare()
// 예시
int[] array1 = {1, 2, 3};
int[] array2 = {1, 2, 4};
int result = Arrays.compare(array1, array2) // 배열비교
- 같은 인덱스별로 비교하며 같으면 0, 앞 배열이 더크면 1, 작으면 -1 반환
- 해당 예시는 0, 0, -1을 출력해서 result 값은 -1이 된다.
명령행 아규먼트(인수)(Command-Line Arguments)
💡
프로그램이 실행될 때 명령 줄(Command Line)에서 전달되는 인수
- 프로그램 실행 시점에 프로그램에게 전달되며, 주로 프로그램의 동작을 제어하거나, 설정하는데 사용
- 자바에서는 “main 메서드의 매개변수”로 이러한 명령행 인수들을 받을 수 있다.
// args배열은 명령행 인수들을 포함한다. public static void main(String[] args){ }
제한 없는 아규먼트(Unlimited Arguments) = 가변 인수(Varargs)
💡
메서드에서 전달할 수 있는 인수의 개수가 제한이 없는 형태의 매개변수
@기본 유형
메소드(타입… 변수명){
}
@기본 유형
메소드(타입… 변수명){
}
- 해당 변수는 배열 취급을 받으며, 0개 이상의 인수를 받을 수 있다.
- 예시
public class Exam{ public static int calculateSum(int... numbers){ int sum = 0; for(int num : numbers){ sum += num; } public static void main(String[] args){ int sum1 = calculateSum(1, 2, 3, 4, 5); int sum2 = calculateSum(5, 6, 9); int sum3 = calculateSum(new int[]{1, 2, 3}); } }
728x90
'JAVA' 카테고리의 다른 글
정적 변수 vs 인스턴스 변수 (0) | 2024.03.31 |
---|---|
TDD (0) | 2024.03.31 |
Label (0) | 2024.03.31 |
조건문/반복문 (0) | 2024.03.31 |
삼항 연산자와 instanceof 연산자 (1) | 2024.03.31 |