[Java] 배열의 선언과 생성

코드 속의 "진돌"·2024년 1월 4일
0
post-thumbnail

✅ 배열의 선언과 생성


배열은 같은 타입의 변수를 사용하기 편하게 하나로 묶어둔 것이다. 이전 예제를 배열을 사용하도록 변경해보자. 참고로 단계적으로 구조를 변경해 나갈 것이다.

✏️ Array1Ref1

package array;

public class Array1Ref1 {

  public static void main(String[] args) {
    int[] students;  // 배열 변수 선언
    students = new int[5];  // 배열 생성

    // 변수 값 대입
    students[0] = 90;
    students[1] = 80;
    students[2] = 70;
    students[3] = 60;
    students[4] = 50;

    // 변수 값 사용
    System.out.println("학생1 점수 = " + students[0]);
    System.out.println("학생2 점수 = " + students[1]);
    System.out.println("학생3 점수 = " + students[2]);
    System.out.println("학생4 점수 = " + students[3]);
    System.out.println("학생5 점수 = " + students[4]);
  }
}

지금부터 아주 간단해보이는 다음 두 줄을 아주 자세히 설명하겠다.

int[] students;  // 1. 배열 변수 선언
students = new int[5];  // 2. 배열 생성
  1. 배열 변수 선언

    • 배열을 사용하려면 int[] students;와 같이 배열 변수를 선언해야 한다.
    • 일반적인 변수와 차이점은 int[]처럼 타입 다음에 대괄호([])가 들어간다는 점이다.
    • 배열 변수를 선언한다고 해서 아직 사용할 수 있는 배열이 만들어진 것은 아니다!
      • int a에는 정수를, double b에는 실수를 담을 수 있다.
      • int[] students와 같은 배열 변수에는 배열을 담을 수 있다. (배열 변수에는 10, 20 같은 값이 아니라 배열이라는 것을 담을 수 있다.)
  2. 배열 생성

    • 배열을 사용하려면 배열을 생성해야 한다.
    • new int[5]라고 입력하면 오른쪽 그림과 같이 총 5개의 int형 변수가 만들어진다.
    • new는 새로 생성한다는 뜻이고, int[5]int형 변수 5개라는 뜻이다. 따라서 int형 변수 5개를 다룰 수 있는 배열을 새로 만든다는 뜻이다.
    • 앞서 int student1, int student2, … int student5까지 총 5개의 변수를 직접 선언했다. 배열을 사용하면 이런 과정을 한번에 깔끔하게 처리할 수 있다.

    배열과 초기화

    • new int[5]라고 하면 총 5개의 int형 변수가 만들어진다. 자바는 배열을 생성할 때 그 내부값을 자동으로 초기화한다.
    • 숫자는 0, booleanfalse, Stringnull(없다는 뜻이다.)로 초기화된다.
  3. 배열 참조값 보관

    • new int[5]로 배열을 생성하면 배열의 크기만큼 메모리를 확보한다.
      • int형을 5개 사용하면 4byte * 520byte를 확보한다.
    • 배열을 생성하고 나면 자바는 메모리 어딘가에 있는 이 배열에 접근할 수 있는 참조값(주소)(x001)을 반환한다.
      • 여기서 x001이라고 표현한 것이 참조값이다. (실제로 x001처럼 표현되는 것은 아니고 이해를 돕기 위한 예시이다.)
    • 앞서 선언한 배열 변수인 int[] students에 생성된 배열의 참조값(x001)을 보관한다.
    • int[] students 변수는 new int[5]로 생성된 배열의 참조값을 가지고 있다.
      • 이 변수는 참조값을 가지고 있다. 이 참조값을 통해 배열을 참조할 수 있다. 쉽게 이야기해서 참조값을 통해 메모리에 있는 실제 배열에 접근하고 사용할 수 있다.
      • 참고로 배열을 생성하는 new int[5] 자체에는 아무런 이름이 없다! 그냥 int형 변수를 5개 연속으로 만드는 것이다. 따라서 생성한 배열에 접근하는 방법이 필요하다. 따라서 배열을 생성할 때 반환되는 참조값을 어딘가에 보관해두어야 한다. 앞서 int[] students 변수에 참조값(x001)을 보관해두었다. 이 변수를 통해서 이 배열에 접근할 수 있다.

    이 부분을 풀어서 설명하면 다음과 같다.

    int[] students = new int[5];  // 1. 배열 생성
    int[] students = x001;  // 2. new int[5]의 결과로 x001 참조값 반환
    students = x001;  // 3. 최종 결과

    참조값을 확인하고 싶다면 다음과 같이 배열의 변수를 출력해보면 된다.

    System.out.println(students);  // [I@3f99bd52 @앞의 [I는 int형 배열을 뜻한다. @뒤에 16진수는 참조값을 뜻한다.
profile
매일 성장하는 주니어 개발자의 기록📝

0개의 댓글