본문 바로가기

Java

[Java] 배열

728x90

배열이란

같은 타입의 데이터들을 하나로 묶어 넣은 것입니다.

변수가 하나의 박스에 값을 넣는 것을 예시로 들 수 있다면, 배열은 여러 개의 박스가 순차적으로 나열된 것입니다.

배열 선언

// 자료형[] 배열이름
int[] intArr
String[] strArr
boolean[] isArr

배열은 같은 타입의 데이터들을 하나로 묶어 놓은 것입니다. 그러므로 어떤 타입인지 미리 선언을 해주어야 합니다.

배열 생성

배열을 선언했지만, 생성은 되지 않았습니다. 배열을 생성하기 위해서는 new 키워드를 사용합니다.

// 자료형[] 배열이름 = new 자료형[크기];

int[] intArr = new int[3]; // 3의 크기인 int 배열 생성
int size = 10;
int[] intArr2 = new int[size]; // 변수를 활용한 배열 크기 정하기
int[] intArr3 = {2,5,1,2};	// 바로 값을 넣을 수 있다 (크기는 4)

 

여기서 가장 중요한 점은 배열의 크기가 고정되어 있다는 것입니다. 즉, 크기가 3인 intArr를 생성했을 때, 이를 4로 바꿀 수 없습니다. 크기가 4인 배열을 만들기 위해서는 새로운 배열을 또다시 생성해주어야 합니다.

배열의 요소 접근

배열의 값(요소)들은 인덱스(index)라고 불리는 번호(주소)가 붙어 있고,

이 번호를 통해 배열에 저장된 값에 접근할 수 있습니다.

public class ArrayPractice {

    public static void main(String[] args) {

        int[] intArr = {1,2,3,4};

        System.out.println(intArr[1]);	// 출력 2
        System.out.println(intArr[2]);	// 출력 3

    }

}

이때 중요한 것은 배열의 첫 번째 값의 인덱스는 0부터 시작한다는 것입니다.

  • intArr[1]은 값 2에 접근합니다.
  • intArr[2]은 값 3에 접근합니다.

꼭 기억하세요, 배열은 0부터 시작합니다.

 

배열과 for문 사용하기

배열은 순차적으로 요소에 접근할 수 있다는 장점이 있습니다. 이때 for문을 주로 사용합니다.

※ 배열의 크기를 알 수 있는 방법은 length를 사용하는 것입니다.

for문 예시:

public class ArrayPractice {

    public static void main(String[] args) {

        int[] intArr = {1,2,3,4};

        for (int i = 0; i < intArr.length; i++) {
            System.out.println(intArr[i]);
        }

    }

}

배열은 0부터 시작하며, 크기가 n이라면 n-1까지 접근할 수 있습니다.

만약 배열의 마지막 인덱스를 넘어간다면 오류가 발생합니다.

오류 발생 코드:

public class ArrayPractice {

    public static void main(String[] args) {

        int[] intArr = {1,2,3,4};

        for (int i = 0; i <= intArr.length; i++) {
            System.out.println(intArr[i]);
        }

    }

}

 

0부터 시작하며 n-1까지 접근이 가능

 

문제

1. 크기가 10인 int 배열에 첫 번째 인덱스부터 마지막 인덱스까지 1~10을 넣어보세요.

정답은 더보기를 클릭하세요.

더보기
더보기
public class ArrayPractice {

    public static void main(String[] args) {

        int[] intArr = new int[10];

        for (int i = 0; i < intArr.length; i++) {
            intArr[i] = i+1;
        }

        for (int i = 0; i < intArr.length; i++) {
            System.out.println(intArr[i]);
        }

    }

}

 

만약 풀지 못했다면, 다시 한번 내용을 읽어보세요.

2. 1번 문제에서 만든 배열을 활용하여 마지막 인덱스부터 첫 번째 인덱스까지 출력하세요.

정답은 더보기를 클릭하세요.

더보기
더보기
public class ArrayPractice {

    public static void main(String[] args) {

        int[] intArr = new int[10];

        for (int i = 0; i < intArr.length; i++) {
            intArr[i] = i+1;
        }
        
        // 배열의 크기 n - 1 번부터 시작 0번째까지 1 감소
        for (int i = intArr.length -1; i >= 0; i--) {
            System.out.println(intArr[i]);
        }

    }

}

 

 

보너스 지식: 배열과 for-each문

자바에는 for-each라는 특별한 형태의 for문이 있습니다. 이 문법을 사용하면 배열이나 컬렉션의 요소를 순차적으로 하나씩 접근할 수 있습니다. for-each문은 간단하고 가독성이 좋으며, 인덱스를 신경 쓰지 않아도 됩니다.

public class ArrayPractice {

    public static void main(String[] args) {

        int[] intArr = new int[10];

        for (int i = 0; i < intArr.length; i++) {
            intArr[i] = i+1;
        }

        for (int n : intArr) {
            System.out.println(n);
        }

    }

}

위 코드에서 for (int n : intArr)는 배열 intArr의 각 요소를 순차적으로 n에 할당하고 반복문을 수행합니다. 즉, intArr 배열의 첫 번째 요소부터 마지막 요소까지 하나씩 접근하여 출력합니다.

  • for-each문은 배열의 모든 요소에 순차적으로 접근합니다.
  • 숫자 변수를 선언하지 않고 배열의 각 요소를 처리할 수 있습니다.

장점:

  • 코드가 간결하고 가독성이 좋습니다.
  • 인덱스를 신경 쓰지 않아도 됩니다.

단점:

  • 배열의 특정 요소(예: 인덱스가 짝수인 요소)나 순서를 바꿔야 하는 경우에는 적합하지 않습니다.

예를 들어, 인덱스가 짝수인 배열 요소만 출력하려면 추가적인 조건문이 필요합니다:

public class ArrayPractice {
    public static void main(String[] args) {
        int[] intArr = new int[10];

        for (int i = 0; i < intArr.length; i++) {
            intArr[i] = i + 1;
        }

        for (int i = 0; i < intArr.length; i++) {
            if (i % 2 == 0) {
                System.out.println(intArr[i]);
            }
        }
    }
}

for-each문을 사용할 때, 특정 인덱스를 사용하지 않기 때문에 인덱스 기반의 조건을 사용하기 어려운 점을 유의해야 합니다.

728x90

'Java' 카테고리의 다른 글

[Java] 예외 Exception와 예외 처리  (0) 2024.07.30
[Java] OOP 객체 지향 프로그래밍  (0) 2024.07.15
[Java] 반복문 while 문  (0) 2024.07.05
[Java] 반복문 for문  (0) 2024.07.04
[Java] switch 문  (0) 2024.07.04