본문 바로가기
JAVA

배열

by 융디's 2024. 3. 31.
728x90
배열

배열

@2024.03.14

같은 타입의 변수들로 이루어진 유한 집합인 배열에 대해서 알아보자.

기본형 배열

💡
기본 타입의 변수를 여러 개 선언할 필요가 있을 때 사용
  • int[] a = {1,2,3,4,5};

참조형 배열

💡
배열 변수가 참조하는 배열의 공간이 값이 아닌 값을 참조하는 배열
  • String[] a = {”대한”, “민국”};

배열 선언

💡
1. 타입[] 변수;

2. 타입 변수[] ;

배열 초기화

💡
1. 타입[] 변수 = new 타입[배열크기];
변수[인덱스] = 값;

2.
타입[] 변수 = new 타입[] {값 1, 값 2, 값 3, …. , };
3.
타입[] 변수 = {값 1, 값 2, 값 3, …. , };
  • 타입[] 변수 = null;

    변수 = {값 1, 값 2, 값 3, …. , };
    → 변수 선언과 동시에 값을 주는 건 가능하나,
    변수를 미리 선언 후 값의 목록을 변수에 대입은 불가능!
  • 해결 방법 : 변수 = new 타입[] {값 1, 값 2, 값 3, …. , };

ArrayIndexOutOfBoundsException

💡
선언한 배열의 수보다 더 많은 수의 배열을 사용한 경우 발생하는 에러

배열의 길이

💡
배열은 length 필드를 가지며, 이를 사용해 구한다.


@기본 사용

int size = 배열변수.length;

이차원 배열

💡
배열을 행과 열로 관리하는 것
  • ‘[]’의 수가 차원의 수를 의미
  1. 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차원 가변 배열 선언 및 초기화

💡
타입[][] 변수 = 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 리턴

배열 복사(깊은복사)

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