[자바 기초] 배열 Array

배열

배열의 정의

  • 같은 자료형의 변수를 하나의 묶음으로 다루는 것
  • 자바에서 배열은 객체(Object)에 속함
  • 배열의 요소들에는 인덱스(index)라는 번호가 붙음
  • 인덱스를 통해 외부에서 배열 요소에 접근 가능

배열 선언과 할당

  • 배열 선언

      자료형[] 배열명;
      자료형 배열명[];
    
  • 배열 할당

      자료형[] 배열명 = new 자료형[배열크기];
      자료형 배열명[] = new 자료형[배열크기];
    
      int[] arr = new int[3];
      int arr[] = new int[3];
    

배열의 저장 구조

  • 배열은 참조 변수로 Heap 영역에 할당, 배열 공간의 주소를 저장
  • 배열 공간의 주소를 이용해 인덱스를 참조하는 방식으로 값 처리

image

배열 초기화

  • 인덱스를 이용한 초기화

      int[] i = new int[3];
      i[0] = 1;
      i[1] = 2;
      i[2] = 3;
    
  • for문을 이용한 초기화

      int i = new int[3];
      for(int j=0;j<i.length;j++)
      	i[j] = j+1;
    

for-each 루프

  • JDK 1.5버전에서는 배열에 대하여 for-each 루프라 불리는 향상된 루프를 사용할 수 있음
  • for-each 루프를 통해 보다 쉽게 배열의 각 요소를 순차적으로 접근 가능

      int[] list = {1,2,3,4,5};
      for(int e : list){
      	System.out.println(e);
      }
    

배열 복사

  • 얕은 복사 Shallow Copy
    • 객체의 주소 값만 가져와 참조형 변수에 저장
    • 하나의 객체를 두 변수가 참조
      int[] arr1 = new int[4];
      int[] arr2 = arr1;
    
  • 깊은 복사 Deep Copy
    • 새로운 배열 객체를 생성하여 기존 배열의 데이터를 복사
      for(int i=0; i<arr1.length ;i++){
      	arr2[i] = arr1[i];
      }
        
      System.arraycopy(arr1, 0, arr2, 0 ,arr1.length); //arr1 배열의 값을 arr2에 복사
        
      arr2 = Arrays.copyOf(arr1, arr1.length);
        
      arr2 = arr1.clone(); //arr1과 동일한 배열을 만들어 arr2에 할당
    

2차원 배열

2차원 배열의 정의

  • 자료형이 같은 1차원 배열의 묶음
  • 배열 안에 다른 배열 존재
  • 2차원 배열은 할당된 공간마다 인덱스를 부여

2차원 배열의 선언과 할당

  • 배열 선언

      자료형[][] 배열명;
      자료형 배열명[][];
      자료형[] 배열명[];
    
  • 배열 할당

      자료형[][] 배열명 = new 자료형[행크기][열크기];
      자료형 배열명[][] = new 자료형[행크기][열크기];
      자료형[] 배열명[] = new 자료형[행크기][열크기];
    

2차원 배열의 구조

image

  • 행 : 주소 값을 갖고 있는 배열의 갯수 (2)
  • 열 : 데이터 값을 갖고 있는 배열의 크기 (4)

2차원 배열 초기화

  • 인덱스를 이용한 초기화

      int[] i = new int[2][2];
        
      i[0][0] = 1;
      i[0][1] = 2;
      i[1][0] = 3;
      i[1][1] = 4;
    
  • for문을 이용한 초기화

      int[] i = new int[2][2];
        
      for(int i=0; i<2; i++){
      	for(int j=0; j<2; j++){
      		i[i][j] = i*2 + j + 1;
      	}
      }
    
  • 선언과 동시에 초기화

      int[] i = {
      	{1, 2},
      	{3, 4}
      }
    

You might also enjoy