[Java] 배열(1)

Yeoonnii·2023년 2월 19일
0

Java

목록 보기
26/30
post-thumbnail

배열

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

변수 생성시 각각의 저장공간에 이름이 부여되며 불연속적인 저장공간에 저장된다
배열은 생성하면 각 배열마다 인덱스(번호)가 부여되고 연속적인 저장공간에 저장된다.
각 저장공간은 참조변수명+인덱스명으로 자동으로 이름이 부여된다.


배열의 인덱스

배열의 인덱스란 배열공간에 자동으로 붙는 숫자이며 배열 생성시 부여된다

인덱스의 범위는 0부터 '배열길이 -1' 까지이다.

배열은 참조변수를 통해 배열의 저장공간을 다루며
각 저장공간은 참조변수명+인덱스명으로 자동으로 이름이 부여된다

int[ ] arr;
arr = new int[6];	

위 코드로 생성된 배열의 경우 아래와 같은 형태를 갖고있다


배열의 길이

배열의 길이는 배열이름.length를 통해 알 수 있으며 배열의 길이는 int형 상수이다

🚩 배열은 한번 생성하면 그 길이를 바꿀 수 없다!

왜 배열의 길이를 바꿀 수 없을까?
➡ 배열을 메모리에 할당할때 메모리의 크기에 따라 주소가 정해진다.
배열의 크기를 늘리는 경우 추가하는 만큼의 연속적인 메모리 자리가 있어야 되는데
항상 메모리 자리가 있다고 장담할 수 없기 때문에 배열의 길이를 바꿀 수 없다.

배열의 길이가 부족한 경우 바꾸는 방법은?
➡ 기존의 배열은 그대로 두고,
새로운 길이로 지정된 배열을 따로 할당 후 (메모리가 있는지 탐색 필요)
데이터의 복사를 진행하고,
기존의 배열을 삭제한다.

총 3번의 작업 + 메모리 탐색 이 필요하기 때문에 리소스 낭비가 크다



배열의 선언과 생성

배열을 다루기 위해 배열을 선언한 후 생성을 해줘야 실제로 저장공간이 만들어진다


배열의 선언

변수는 선언시 바로 저장공간이 생성되지만,
배열의 선언은 배열을 다루기 위한 참조변수의 선언을 뜻하며
배열 선언시 저장공간이 생성되지 않는다


배열의 선언방법

배열을 선언하는 방법은 아래와 같이 두가지 방법이 있는데
자바(Java)에서는 주로 1의 형태를 사용한다

  1. 타입[ ] 변수이름 ; ⏩ ex. int[ ] Score; String[ ] name;
  2. 타입 변수이름[ ] ; ⏩ ex. int Score[ ]; String name[ ];

배열 선언하고 생성하기

타입[ ] 변수명;             // 배열을 선언(배열을 다루기 위한 참조변수 선언)
변수명 = new 타입[길이];   // 배열을 생성(실제 저장공간을 생성)
int[ ] score;			// 1. 배열의 참조변수 선언
score = new int[5];		// 2. 배열의 저장공간 생성

int score = new int[5];  // 배열의 선언과 생성을 동시에 할 수도 있다 (1 + 2)


배열의 초기화

배열의 각 요소에 처음으로 값을 저장하는것
배열은 기본적으로 기본값으로 초기화가 된다.

초기화는 아래 두가지 방법이 있지만 대부분 두번째 방식을 사용한다
int score = { 50, 60, 70, 80, 90 }; 이 방식만 기억해둘것!

int score = new int[ ]{ 50, 60, 70, 80, 90 };  // 잘 사용되지 않는 방법
int score = { 50, 60, 70, 80, 90 };  // new int[ ]를 생략할 수 있음, 대부분 이 방식을 사용함

하지만 아래와 같이 나누어 사용하면 에러가 발생한다

int[ ] score; 					
score = { 50, 60, 70, 80, 90 }; // 에러!! new int[ ]를 생략할 수 없다

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

배열의 규칙이 있거나 반복문을 사용가능한 경우 반복문으로 초기화 값을 넣어주어도 된다

0개의 댓글