배열

백엔드/JAVA / / 2021. 8. 21. 17:59

배열은 순차 자료 구조의 대표적인 예로, 동일한 자료형의 변수를 한꺼번에 순차적으로 관리하기 위해 사용합니다.

 

배열 또한 변수와 같이 선언, 초기화, 사용 단계를 거칩니다.

  1. 배열 선언
    1. 자료형[ ] 배열명 = new 자료형[개수];
    2. 자료형 배열명[ ] = new 자료형[개수];
  2. 배열 초기화
    1. 자료형[ ] 배열명 = new 자료형[ ] { }; 주의할 점은 우항 자료형에 개수를 작성하면 오류가 발생한다.
    2. 자료형 [ ] 배열명 = { }; 와 같은 방식을 사용하면 배열의 선언과 동시에 초기화가 진행된다.
  3. 배열 사용
    1. 배열명[index number] = 값;
    2. 해당 배열에 맞는 데이터 값을 작성하면 배열에 추가된다.

지금부터는 각 요소들에 대해서 조금 더 자세히 알아보자

  1. 배열의 길이 속성은 배열명.length 형태로 사용한다. 
    1. length를 직관적으로 알기 위해서 우리는 for문에서 '<='이 아니라 '<'을 사용한다.
  2. [ ] : 인덱스 혹은 첨자 연산자라고 불리며 배열의 위치를 지정하여 자료를 가져온다.
    1. [index number] : 0부터 시작하고 n개의 배열은 n-1 위치까지 자료가 존재한다.
  3. 배열 변수는 참조 변수에 속한다.
    1. 즉, 배열이 객체이므로 힙 영역에 생성되고 배열 변수는 힙 영역의 배열 객체를 참조한다.
  4. new 예약어를 사용하지 않으면 해당 배열은 null 값을 가진다.
    1. null 값을 가진 상태의 배열을 사용하면 NullPointException이 발생한다.
  5. 다차원 배열
    1. 1차원 배열이 여러 층 쌓여 있는 형태로 생각하면 이해하기 쉽다.
    2. 보통 지도, 게임 등과 같은 평면이나 공간을 구현할 때 많이 사용된다.
    3. 자료형[ ] [ ] 배열명 = new 자료형[행] [열];
      1. 행,열로 생각하면 2차원 배열 형태의 이해가 조금 쉬워진다.
public class ArrayTest {
	public static void main(String[] args) {
		
		String[] abc = new String[6];
		abc[0] = "a";
		abc[1] = "b";
		abc[2] = "c";
		abc[3] = "d";
		abc[4] = "e";
		abc[5] = "f";
		//abc[6] = "g"; -> ArrayIndexOutOfBoundsException : 크기가 초과되었다는 오류
        
		// 배열의 길이를 알고 있는 상황(abc = 6)
		for(int i = 0; i < 6; i++) {
			System.out.println(abc[i]);
		}
        
		// length를 이용한 for문
		for(int i = 0; i < abc.length; i++) {
			System.out.println(abc[i]);
		}
		
		// 향상된 for문
		for(String s : abc) {
			System.out.println(s);
		}
		// 결과는 length를 사용한 것과 일치한다.
        
		int[][] numArr = new int[2][3];
		int[][] numArr = { {1,2,3}, {4,5,6} };
		
		for(int[] num1 : numArr) {
			for(int num2 : num1) {
				System.out.println(num1);
			}
		}
	}
}

우리는 배열을 조금 더 쉽게 사용하기 위해서 List 인터페이스를 많이 사용합니다.