티스토리 뷰

JAVA

[Java] 배열

단미라이프 2022. 3. 14. 09:27
반응형

 

1. 배열 (Array)

  • 배열은 인덱스인덱스에 대응하는 데이터들로 이루어진 연속적인 자료구조이다.

  • 만약 위 그림 (1)처럼 1부터 10까지 숫자 중 홀수의 값을 저장하고자 할 때 서로 다른 변수의 이름을 만든다면 코드 또한 길고 지저분할 것이다. 
    그러나 (2)와 같이 배열을 사용하면 간단히 5개의 정수 공간을 가진 배열을 생성할 수 있다.

 

 

배열 선언 및 생성

 

(1) 레퍼런스 변수 선언

int Array[];

또는

int [] Array;
  • 이 선언만으로 배열 공간이 할당되지 않으며, 레퍼런스 변수 Array만 생성된다.
  • Array는 배열 공간에 대한 주소 값만 가지며 배열은 아니다.

 

 

 

 

(2) 배열 생성

Array = new int[5];
  • 배열 생성은 데이터를 저장할 배열 공간을 할당 받는 과정이다.
  • 이때 new 연산자를 통해 배열을 생성하며  [ ] 안에 생성할 원소의 개수를 지정한다.
  • 즉, 배열의 길이는 고정되어 있다.

 

배열 선언과 동시에 생성

 

  • 배열 선언과 동시에 생성할 경우 아래와 같이 사용한다.
int Array[] = new int[5];

 

  • 배열의 길이를 설정하지 않은 경우 컴파일 오류가 발생한다.
String[] week = new String[];    // 배열의 크기 값이 없으므로 컴파일 오류가 발생한다.

 

 

배열 초기화

 

  • 배열 선언문에서  { } 에 원소를 나열하면 초기화된 배열을 만들 수 있다.
  • 배열의 크기는 { }에 나열된 값의 개로 정해진다.
int Array[] = {1, 3, 5, 7, 9};

 

 

 

 

배열의 값은 어떻게 접근할까?

 

  • 배열의 인덱스는 0부터 시작하며 정수만 가능하다.
  • 마지막 원소의 인덱스 (배열크기 -1) 이다.
int Array[] = new int[5];	//원소 5개인 배열 생성
Array[0] = 5;	// 원소 0에 5 저장
Array[2] = 6;	// 원소 2에 6 저장
Array[4] = 2;	// 마지막원소. 원소 4에 2 저장

 

  • 인덱스로 음수를 사용하면 실행오류가 발생한다.
public class Ex01 {

	public static void main(String[] args) {
		int Array[] = {1,3,5,7,9};
		
		System.out.println(Array[-2]);	//인덱스로 음수 사용 불가 ArrayIndexOutOfBoundsException 오류가 발생
	}

}
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index -2 out of bounds for length 5 at Ex01.main(Ex01.java:7)

 

  • 배열의 범위를 넘어서면 실행오류가 발생한다.
public class Ex01 {

	public static void main(String[] args) {
		int Array[] = {1,3,5,7,9};
		
		System.out.println(Array[5]);	//5는 인덱스의 범위(0~4)를 넘었음 ArrayIndexOutOfBoundsException 오류가 발생
	}

}
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5 at Ex01.main(Ex01.java:7)

 

 

레퍼런스 치환과 배열 공유

 

  • 자바에서는 레퍼런스 변수와 배열공간이 분리되어 있기 때문에 배열공유가 쉽게 이루어진다.
int Array[] = new int[5];
int reArray[] = Array;	//레퍼런스 치환. reArray는 Array와 동일한 배열참조

 

  • reArray는 Array 배열을 복사하는 것이 아니라 Array와 동일한 레퍼런스 값을 가지게 되는 것이다.
  • reArray로 Array의 배열원소를 마음대로 접근할 수 있다.

 

배열의 크기

 

  • length를 이용하면 배열의 크기를 알아낼 수 있다.
int Array[] = new int[5];
int size = Array.length;	//size는 5

 

  • (반복문에서 사용) 배열의 크기만큼 반복할 때 length를 사용하면 유용하다.

public class Ex02 {

	public static void main(String[] args) {
		
		String[] weeks = {"월", "화", "수", "목", "금", "토", "일"};
		
		for (int i = 0; i < weeks.length; i++) {

		    System.out.println(weeks[i]);
		}
		
	}

}

 

 

 

2. 다차원배열

 

2차원 배열

 

int Array = new int[2][5];	// 2행 5열의 2차원 배열 생성

 

 

  • 2차원 배열을 선언할 때 각 원소를 초기화할 수 있고, 원소 개수만큼 배열공간이 할당된다.
int array[][] = {{0,1,2}, {3,4,5}, {6,7,8}};	// 3×3 배열 생성

 

 

 

 

반응형
댓글
반응형
공지사항