[TIL] JAVA 배열

hyo_·2021년 4월 2일
0

JAVA 

목록 보기
20/20

배열이란?

물리적, 논리적으로 연속되어 있는 자료구조
길이고정적(Fixed-length)
중간 값이 비어있으면 오류 발생

배열 사용 이유

만약 학생 10명의 변수가 필요한데 각각 하나씩 변수를 만들어 사용하면 관리가 힘들고 비효율적이다.

➔ 변수 사용 시 같은 자료형의 변수들을 묶어 한번에 관리 할 수 있다.

선언 방법

// 선언

  • 자료형 [] 배열 이름;
    : int [] arr;

  • 자료형 배열이름 [] ;
    : int arr [];

// 선언 & 크기 할당

  • 자료형 [] 배열이름 = new 자료형 [크기];
    : int [] arr = new int[5];

// 선언 & 초기화

  • 자료형 [] 배열이름 = { 초기화 값 };
    : int [] arr = {1, 2, 3};

배열 길이

배열 이름.length ➡️ 배열의 길이를 알 수 있다.

int [] arr = new int[5];
arr [0] = 1;
arr [1] = 2;
System.out.println(arr.length);
  • 결과값

length 필드는 배열의 초기화 된 값의 길이가 아닌 배열 크기 자체를 반환한다.

배열 복사

System.arraycopy(복사할 배열,복사할 첫 위치, 대상 배열, 붙여 넣을 첫 위치, 복사할 요소 개수);


int [] arr1 = new int[3];
int [] arr2 = new int[5];

arr1 [0] = 1;
arr1 [1] = 2;

arr2 [0] = 3;
arr2 [1] = 4;
arr2 [2] = 5;

System.arraycopy(arr1, 0, arr2, 0, 2);

System.out.println("arr1 = " + Arrays.toString(arr1));
System.out.println("arr2 = " + Arrays.toString(arr2));
  • 결과값

객체 배열이 아닌 기본 배열의 경우 직접 값을 초기화 해주지 않으면 0으로 초기화 된다. arr1 배열의 index 2 arr2 배열의 index 3-4는 0으로 출력되었다.


👋 주의

객체 배열

  1. Book library [] = new Book[3]; 과 같은 객체 배열은 생성 뒤 주소 값을 가진 공간만 생길 뿐 0으로 초기화 되지 않기 때문에 출력 시 null값이 나온다.

    직접 하나씩 각각의 인덱스에 객체를 생성해주어야 한다.

    ex) 
	library[0] = new Book("책이름", "출판년도");
	library[1] = new Book("책이름", "출판년도");
  1. 객체배열System.arraycopy(); 를 할 경우 주소가 복사되어 얕은 복사가 일어난다.
    ➞ 두 배열 중 한 배열이 요소의 값을 변경하면 두 배열 모두 동일한 주소 값을 가지고 있기 때문에 두 배열 모두 요소의 값이 변경 된다.
profile
🎓의지적인 삶을 살자!😊

0개의 댓글