[자바/JAVA] 배열(array), 다차원배열, 객체참조배열이란? (각 배열의 특징을 살펴보고 선언해보자)

박정현·2023년 8월 6일
1
post-thumbnail

배열

자바타입은 크게 기본타입과 참조타입으로 분류한다.
참조타입은 객체 번지를 참조하는 타입으로 배열, 열거, 클래스, 인터페이스가 있다.

1. 배열 ⭐

이제 배열에 대해 알아보자

1) 배열이란?

  • 배열은 다량의 데이터를 처리하기 위한 List형 타입을 말한다.
  • 배열은 순서가 있는 List이다.
  • 데이터를 연속된 공간에 나열하고 각 데이터에 인덱스를 부여한 자료구조를 갖는다.
    • 여기서 인덱스는 각 항목의 데이터를 읽거나 저장하는데 사용된다.
  • [] : 배열이라고 생각하자

    🙋 점수를 넣는 score배열이 있다고 하자

  • 학생들 성적을 Score배열의 각 인덱스를 저장할 수 있다.
  • score[0]은 98, score[1]은 83의 값을 가진다.

2) 배열 특징

  1. 같은 타입의 데이터를 순서대로 그룹화한다.
  2. 인덱스는 0번지부터 시작한다.
    - 배열을 구성하는 각각의 값을 배열요소라고 한다.
    - 배열에서의 위치를 가리키는 숫자는 인덱스이다.
  3. 배열의 개수는 고정된다.
    - 배열과 많이 비교되는 컬렉션은 고정되지 않는다.(가변)
  4. 배열의 전체 주소값으로 접근할 수 있다.
    - 배열은 참조형이기 때문에 주소로 접근한다.
  5. 배열의 생성과 동시에 초기화 해야 한다.
  6. 값을 초기화하지 않으면 0으로 초기화한다.
    - int형일 경우 기본적으로 0으로 초기화
  7. 배열을 출력할 때 반복문(for)과 같이 많이 사용된다.
  • 예시(for)
          int[] array1 = { 1, 2, 3, 4, 5 }; // 생성과 동시에 1,2,3,4,5 초기화
          
          		// for콘솔에 모든 요소를 출력
          		for (int i = 0; i < array1.length; i++) {
          			System.out.println("array1[" + i + "]=" + array1[i]);
          		}
          
  • 예시(foreach)
          int[] arr1 = {1,2,3,4,5};
          		
          		for(int el: arr1) {
          			System.out.println(el);
          		}
     
          
  1. 전체 배열의 데이터의 개수는 전체 인덱스의 총 수보다 1크다.
    - 0번지부터 시작되기 때문
  2. 배열 이름에 전체배열의 주소값을 저장한다.

3) 배열 길이

<aside>
✅ 배열 변수명.lengh;

</aside>

- 여기서 .은 객체접근연산자
- 값을 변경할 수는 없다.

4) 배열생성

1) 값 목록으로 배열 생성

  • 값을 알고 있다면 간단하게 배열 객체를 생성할 수 있음

      ✅ 타입 [   ] 변수 = { 값0, 값1, 값2, 값3, … };
      
  • 값을 바꾸고 싶다면 대입연산자를 이용

    ✅ 변수 [ 해당 인덱스] = “ 값 
    
   
  • 배열 변수를 먼저 선언한 후에 중괄호로 값을 넣을 수 없음 → new연산자 사용

      ✅ 타입 [   ] 변수;
      변수 = { 값0, 값1, 값2, ….};  **→컴파일 에러**
      

    2) new 연산자로 배열 생성

    • 값의 목록을 가지고 있지 않지만 , 향후 값들을 저장할 배열을 미리 만들고 싶을 때

      ✅ 타입 [ ] 변수1 =new 타입[길이];

      ✅ 변수 [ 해당 인덱스] = “ 값 “;

      
  • 해당타입의 데이터를 저장할 수 있는 배열 변수1을 선언했다.

  • 변수에 값저장하는 방법

  • 길이는 배열이 저장할 수 있는 값의 개수를 말함

  • 이미 배열 변수가 선언한 뒤에도 new연산자로 배열을 생성할 수 있음

  • 변수 선언과 동시에 값을 초기화 → 개수가 정해져 있음

      ⭕ 타입[  ] 변수 = new 타입 [  ]  { 값0, 값1, 값2, …};
      
      
      

    2. 다차원배열

    실제로 잘 쓰이지 않기 때문에 중요한 부분은 아니다.
    개념적으로 정리하고 구별할 정도로만 공부한다.

    1) 다차배열 선언

    ✅ int [ ][ ] 변수 = new int [3][4];

    • int형 데이터를 저장할 수 있는 3행, 4열의 배열을 생성했다.

    • 행수: 변수.length;

    • 열수: 변수[0].length;

    • 역시 0부터 시작한다.

      0열1열2열3열
      0행(0,0)(0,1)(0,2)(0,3)
      1행(1,0)(1,1)(1,2)(1,3)
      2행(2,0)(2,1)(2,2)(2,3)

      2) 다차원배열 초기화

      ✅ { {1,2,3,4}

      {5,6,7,8}

      {9,10,11,12}

      }

    • 3행 4열 배열 각각의 숫자가 좌표에 해당

    • arr[0][0] → 1

      3. 객체참조배열

      1) 객체참조배열이란?

      ✅ String[ ] 변수 = new String[길이];
    • 기본 타입 배열은 각 항목에 직접 값을 갖고 있지만 참조 타입배열은 각 항목에 객체의 번지를 가지고 있다.

    • String[ ] 배열 항목 안의 문자열을 비교하기 위해서는 equal() 메소드 이용한다.

      String[  ] array1 = new Sting[3];
      array1[0] = “java”
      array1[1] =C++”
      array1[2] =C

      2) foreach⭐⭐⭐

      ✅ for( 타입 타입변수명: 배열명) { System.out.println(타입변수명); }
    • 객체만 다루는 for문을 foreach문이라 한다.

    • 모든 객체의 요소를 가져온다(get).

      • 모든 배열의 요소를 가져온다.
      • 0번지 부터 마지막 번지까지 모두 가져온다.
    • 간편하여 많이 사용한다.


📚 Reference

신용권, 『혼자공부하는 자』, 한빛미디어(2023)
profile
개발을 개발괴발하지 않기 위한 노력

0개의 댓글