Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

냠냠뇸

[Java의 정석] 배열(array) 본문

JAVA/자바의 정석

[Java의 정석] 배열(array)

yerinn 2022. 1. 26. 20:42

 1. 배열  

1-1. 배열의 선언과 생성

 

배열은 다음과 같은 두가지 방법으로 선언할 수 있다.

 

1) 타입[ ] 변수이름;

int[] score;
String[] name;

2) 타입 변수이름[ ];

int score[];
String name[];

 

배열을 선언한 다음에는 값을 저장할 수 있는 공간을 만들기 위해 배열생성과정을 다음과 같이 거친다.

타입[ ] 변수이름;                               -> 배열선언
변수이름 = new 타입[길이]            -> 배열생성
int[] score;
score = new int[5];  //int 타입 값 5개를 저장가능한 배열생성

참고로 길이가 0인 배열도 사용 가능하다.

 

 

1-2. 배열의 길이와 인덱스

 

age[2] = 28;  // 배열 age의 3번째 요소에 28을 저장한다.
int value = score[3];  // 배열 score의 4번째에 저장된 요소를 value에 저장한다.

이런식으로 배열의 인덱스를 이용해 값을 저장할 수 있고,

 

 

for (int i=0 ; i < 5 ; i++ ){
	age[i] = i + 10 ;
}

수식을 이용해 값을 저장할 수 도 있다.

 

배열의 길이에 대한 정보는 '배열이름.length'를 통해 얻을 수 있다.

int[] arr = new int[5]; // 길이가 5인 int 배열
int tmp = arr.length; // tmp에는 배열의 길이인 5가 저장된다.

 

for문을 사용할때 조건식을 아랫줄처럼 배열길이로 지정하면 더 쉽게 관리 할 수 있다.

for (int i=0 ; i < 6 ; i++)

for (int i=0 ; i < score.length ; i++)

 

1-3. 배열의 초기화 

 

배열은 직접 값을 저장하거나 for문등을 통해 배열을 초기화 할 수도 있지만,

자바에서는 특별한 방법으로 간단히 초기화 하는 방법이 존재한다.

int [] score = new int { 10, 20, 30, 40, 50};   //배열의 생성과 초기화를 동시에
int [] score = {10, 20, 30, 40, 50};   // new int 생략가능

이런식으로 생성과 동시화 특정값으로 초기화 할 수 있고,

new int 를 삭제해 더 간결하게 코드를 구성할 수도 있다.

 

단 아래와 같이 선언을 따로 하는 경우에는 new int 를 생략할 수 없다.

int[] score;
score = new int[] { 10, 20, 30, 40, 50 };  // ok
score = { 10, 20, 30, 40, 50 };  // 에러

 

아래 배열들은 모두 길이가 0인 배열이다.

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

배열 출력시 Arrays.toString(배열이름) 매서드를 사용하면 배열의 요소를 쉽게 반환할 수 있다.

int[] Arr = { 10, 20, 30, 40, 50 };
System.out.println(Arrays.toString(Arr));  //배열Arr의 모든값을 출력한다.

 

1-4. 배열의 복사 

 

for문을 통해 배열을 복사하거나 아예 arraycopy()을 이용하여 복사하는 방법도 있다.

for(int i=0 ; i < num.length ; i ++) {newNyum[i] = num[i];}

System.arraycopy(num, 0, newnum, 0, num.length) ;

위의 for문을 아래와 같이 대신해서 쓸수 있는데,

괄호안의 요소들은 num[0]에서 newnum[0]으로 num.length개의 데이터를 복사한다. 로 해석할 수 있다.