[JAVA] 배열(Array)

Taesu Seo·2021년 3월 13일
0

JAVA

목록 보기
1/3
post-thumbnail

배열 메모리 구조

배열 변수는 참조 변수에 속함
배열도 객체이므로 힙 영역에 생성
배열 변수는 힙 영역의 배열 객체를 참조하게 됨

  • 1차원 배열 메모리구조
int[] intArray = new int[5];

  • 2차원 배열 메모리구조
int[][] scores = {{1, 2}, {3, 4, 5}};

배열 선언 및 초기화

  • 값 목록
  • new 연산자를 사용
  • 배열 변수를 미리 선언한 후 new 연산자를 사용해서 값 목록을 지정
  public class Blog {
      public static void main(String[] args) {
          // 1차원 배열
          int[] arr = {0, 1, 2, 3, 4};
          int[] arr2;
          arr2 = new int[5];
          int[] arr3;
          arr3 = new int[]{0, 1, 2, 3, 4};

          // 다차원 배열
          int[][] arr4 = {{0, 1}, {2, 3, 4}};
          int[][] arr5;
          arr5 = new int[2][3];
          // int[][] arr6 = new int[필수입력][];
      }
  }

이런 형태의 배열에서 주의할 점은 정확한 배열의 길이를 알고 인덱스를 사용해야 함
arr4[0][2]ArrayIndexOutOfBoundsException 을 발생시킴


  • 값의 목록으로 배열 객체를 생성할 때 주의할 사항은 배열 변수를 이미 선언한 후에 다른 실행문에서 중괄호를 사용한 배열 생성은 허용되지 않음
  int add(int[] scores) {···}
  -----------------------------
  int result  = add( {95, 85, 90} ); // 컴파일 에러
  int result2 = add( new int[] {95, 85, 90} );

객체를 참조하는 배열

  • 기본 타입(byte, int, double, boolean 등.. ) 배열은 각 항목에 직접 값을 가짐
  • 참조 타입(클래스, 인터페이스) 배열은 각 항목에 객체의 번지를 가짐
    • String[] 배열의 항목도 결국 String 변수와 동일하게 취급되어야 함
    • String[]배열 항목 간에 문자열을 비교하기 위해서는 == 연산자 대신 equals() 메소드를 사용해야 함 ( == 연산자는는 객체의 번지 비교이기 때문에 문자열 비교에 사용할 수 없음 )
public class Blog {
    public static void main(String[] args) {
        String[] strArray = new String[3];
        strArray[0] = "Java";
        strArray[1] = "Java";   // 문자열 리터럴이 같은 경우, 하나의 스트링 객체가 만들어짐
        strArray[2] = new String("Java");

        System.out.println( strArray[0] == strArray[1] );       // true  ( 같은 객체를 참조 )
        System.out.println( strArray[0] == strArray[2] );       // false ( 다른 객체를 참조 )
        System.out.println( strArray[0].equals(strArray[2]) );  // true  ( 문자열이 동일 )
    }
}

profile
Connecting the dots

0개의 댓글