Array 만들기#1

타입[] 변수명;
타입 변수명[]

reference 타입

배열의 생성과 초기화

생성

new keyword와 함께 저장하려는 데이터 타입 및 크기 지정

new data_type[length]
new int[3]; // int 타입의 자료 3개를 저장할 수 있는 배열을 메모리에 생성
points = new int[3]; // 생성된 배열을 points라는 변수에 할당
// points는 메모리에 있는 배열을 가리키는 reference 타입 변수
배열 요소의 초기화
  • 배열의 생성과 동시에 저장 대상 자료형에 대한 기본값으로 default 초기화 진행
  • boolean: false, char: ‘\u0000’(공백문자), byte/short/int: 0, long: 0L, float: 0.0f, double: 0.0, 참조형 변수: null(아무것도 참조하지 않음)

배열의 사용

배열은 index 번호를 가지고 각 요소에 접근 가능

  • index 번호는 0부터 시작
  • 배열의 길이: 배열이름.length로 배열의 크기 조회 가능

Array 출력을 편리하기

for문을 통한 출력대신 Arrays.toString()

Array 만들기#2

생성과 동시에 할당한 값으로 초기화

int[] b = new int[] {1, 3, 5, 6, 8};
int[] c = {1, 3, 5, 6, 8};

선언과 생성을 따로 처리할 경우 초기화 주의

int[] points; points = {1, 3, 5, 6, 8}; // 컴파일 오류
int[] points; points = new int[] {1, 3, 5, 6, 8}; // 선언할 때는 배열의 크기를 알 수 없을 때

배열의 생성과 메모리 사용 과정

  • int[] points = new int[3];
  • 배열 선언: int[] points
  • 배열 생성: new int[3]; int 타입의 데이터 3개를 담을 수 있는 메모리 공간 확보
  • 메모리에 연속된 공간 차지 -> 크기 변경 불가!
  • Type에 대한 default 초기화
  • 참조 값 할당: points = new int[3]; 배열의 주소를 변수에 할당하여 참조하게 함
  • 요소에 할당: points[0]=1; points[1]=’A’;

for-each with Array

  • 가독성이 개선된 반복문으로, 배열 및 Collections에서 사용
  • index 대신 직접요소(element)에 접근하는 변수를 제공(naturally read only, copied value)
  • 사용
    int intArray [] = {1, 3, 5, 7, 9};
    for(int x: intArray){
      System.out.println(x);
    }
    

Array is Immutable

  • 배열은 최초 메모리 할당 이후 변경할 수 없음
  • 개별 요소는 다른 값으로 변경이 가능하나, 요소를 추가하거나 삭제할 수는 없음

더이상 참조하지 않는 메모리 : garbage, GC가 청소함

api 제공하는 배열 복사 method

System.arrayCopy
Arrays.copyOf

2차원 Array 만들기

int Type 기준으로 4x3 배열(Array) 만들기

  • 선언
    int[][] intArray;
    int intArray[][];
    int[] intArray[];
    
  • 생성
    intArray = new int[4][3];
    
  • 할당
    intArray[0][2] = 3;
    


int Type 기준으로 4x3 배열(Array)과 값을 동시에 만들기

  • 선언, 생성, 할당 동시에
    int[][] intArray = { {0, 1, 2}, {0, 1, 2}, {0, 1, 2} };
    


int Type 기준으로 4x? 배열(Array) 만들기

  • 1,2차 선언/ 1차 생성
    int[][] intArray = new int[4][];
    
  • 1차 Array만 생성 후, 필요에 따라 2차 배열을 생성함
    intArray[0] = new int[3];
    intArray[1] = new int[2];
    intArray[2] = new int[] {1, 2, 3};