본문 바로가기

□ 이론/기타

[Java] 배열(array)

배열(array)



▶배열(array)

  같은 타입의 여러 변수를 하나의 묶음으로 다루는 것

  일정한 자료형의 변수들을 하나의 이름으로 열거하여 사용하는 자료구조




▶선언과 생성

 방법


   int[] age;              // int타입의 배열을 다루기 위한 참조변수 age

   age = new int[7];   // new 연산자가 sizeof(int)*7 만큼의 메모리를 할당하고 시작주소 값을 반환한다.



   int[] age = new int[7];



명시적으로 초기화 해주지 않으면 기본 초기화 값으로 초기화 된다.


타입 

기본 초기화 값 

 int, float, double

boolean 

false 

char 

null ('\u0000') 

참조형

null 




▶초기화

 방법


  for(int i = 0 ; i < age.length ; i++)

  {

      // JVM이 모든 배열의 길이를 관리한다. '배열이름.length'로 접근 가능.

      age[i] = 20+i;
  }


 

  int[] age = new int[7] { 20, 21, 22, 23, 24, 25, 26 } ;



method ( new int[] { 20, 21, 22, 23, 24, 25, 26 } ) ;
메소드의 인자값으로 배열을 넣을 때 이렇게 초기화하는 것도 가능하다.

길이가 0인 배열 생성도 가능하다.
int[] age = new int [0];
int[] age = new int[];
int[] age = { };



▶배열 내용 확인
  System.out.println( Arrays.toString( age ) );  // [ 21, 22, 23, 24, 25, 26 ] 출력


  import java.utill.*;  을 추가해줘야 한다.
  예외적으로 char형 배열은 배열 이름만 넣어도 구분자 없이 그대로 출력된다.



▶배열 길이 변경
  더 큰 배열을 새로 생성하여 기존 배열의 내용을 복사하면 된다.
  일반적으로 기존 배열 크기의 2배 크기의 배열을 새로 생성한다.



▶배열 복사
  for문으로 요소 하나씩 값을 복사하는 것 보다
  System.arraycopy()를 사용하는 것이 효율적이다.

  System.arraycopy ( 기존배열, 시작인덱스, 새로운배열, 시작인덱스, 복사할 개수 );

  System.arraycopy(oldAge, 0, newAge, 0, oldAge.length);

  이렇게 하면 newAge에 oldAge의 모든 내용이 복사된다.
  복사하려는 내용보다 여유 공간이 적으면 ArrayIndexOutOfBoundsException이 발생