본문 바로가기

LANGUAGE/JAVA

[JAVA] 배열 Array

728x90
배열이란?

같은 타입의 여러 변수를 하나의 묶음으로 다루는 것

 

변수로 선언하는 경우 
int score1, score2, score3, score4, score5;

 

5개의 점수가 연속되지 않은 주소 메모리에 생성됨 

 

 

배열로 선언하는 경우
int[] score = new int[5];

배열은 각 저장공간이 연속적으로 배치되어 있음

 

 

배열의 선언 & 생성 

//타입[] 변수명 = new 타입[크기];
int[] score = new int[5];

선언과 생성을 동시에 하는 방법으로 주로 이렇게 선언한다.

 

 

 

배열의 선언 

두가지 방법으로 선언이 가능함. 

//타입[] 변수이름;
int[] score;

//타입 변수이름[];
int score[];

생성된 배열을 다루기 위한 참조변수를 위한 공간이 만들어 짐 

 

 

배열의 생성

배열 선언 시 , 생성된 배열을 다루기 위한 참조변수를 위한 공간이 만들어질 뿐이고, 배열을 생성해야만 비로소 값을 저장할 수 있는 공간이 만들어짐.

score = new int[길이];

 

 

생성되는 과정 

 

 

배열의 초기화

배열은 생성 동시에 모든 값이 0으로 초기화 된다.

 

원하는 값을 넣으려면 다음과 같이 넣어준다.

score[0] = 50;

규칙이 있는 경우 for문을 사용하면 편리하다.

 

선언과 동시에 초기화가 가능하다.

int[] score = new int[]{ 50, 60, 70, 80, 90};

//new int[] 생략가능
int[] score = { 50, 60, 70, 80, 90};

new부분은 생략이 가능하지만, 선언과 동시에 초기화하지 않는 경우(선언과 생성을 따로 하는 경우)는 생략할 수 없다. 

 

길이가 0인 배열

int[] score = new int[0];
int[] score = new int[]{};
int[] score = {};

 

 

배열의 크기(길이)

 

배열의 길이는 JVM이 별도로 관리하며, 

배열이름.length

를 통해 접근이 가능하다. 

변경 불가능한 상수 값이다.

 

범위0  배열의 크기 ≤ int타입의 최댓값 (2,147,483,647)

 

 

 

배열의 크기 변경(배열의 복사)

배열의 크기는 변경 불가능한 상수 값이므로, 배열의 크기를 늘리고 싶은 경우에는,

  1. 더 큰 배열을 새로 생성
  2. 기존의 배열의 내용을 새로운 배열에 복사 

다음과 같은 방법을 사용해야 한다.

 

int[] arr = {1, 2, 3, 4, 5};

int[] tmp = new int[arr.length*2];//길이가 2배인 배열 생성 

for (int i = 0 ; i < arr.length ; i++)
	tmp[i] = arr[i];
    
arr = tmp;

 

 

메모리에서는 다음과 같은 과정을 거친다.

int[] arr = {1, 2, 3, 4, 5};
int[] tmp = new int[arr.length*2];//길이가 2배인 배열 생성

 

 

for (int i = 0 ; i < arr.length ; i++)
	tmp[i] = arr[i];

 

 

 

  arr = tmp;

728x90

'LANGUAGE > JAVA' 카테고리의 다른 글

[Java] 제어자(modifier)  (0) 2021.09.30
[Java] 열거형(enums)  (0) 2021.09.22