hoon's bLog

Java Array 자바 배열 사용 및 문법 본문

IT/Java

Java Array 자바 배열 사용 및 문법

개발한기발자 2021. 1. 5. 17:11
반응형

안녕하세요!

이번 포스팅에서는 "배열"!

배열에 대해서 한번 알아보도록 하겠습니다.

배열(Array)이란?

배열(Array) : 같은 타입의 여러 변수를 연속된 메모리 공간으로 이루어진 자료구조

여기서 중요한 것은 같은 타입이어야 한다는 것!!!(서로 다른 타입은 안됩니다!!)

꼭 기억해주시기 바랍니다!

보통 배열 생성하면서 그 안에 들어갈 데이터 자료형이 달라 에러가 나는 경우가 간혹 있으니,

주의하셔야 합니다!

그렇다면 배열은 어떻게 선언하고 생성을 할까요?

선언 방법 선언 예
타입[] 변수이름; int[] test;
String[] name;
타입 변수이름[]; int test[];
String name[];

대괄호는 보통 변수 이름보다 타입 뒤에 붙이는 경우가 많다!(코드의 획일화를 위해 상황에 따라 맞춰줄 것!)

자, 이렇게 배열이 선언이 되고 난 후에는, 배열을 생성해야 한다.

배열을 선언하는 것은 단지 생성된 배열을 다루기 위한 참조 변수를 위한 공간을 만든 것이고,

배열을 생성해야 값을 저장할 수 있는 공간이 만들어진다!

int[] test;              //int형 참조변수 test 선언
test = new test[5];      //int타입의 값 5개를 저장할 수 있는 배열 생성

int[] test; 를 통해 참조 변수가 선언됩니다.

아직 데이터를 저장할 수 있는 공간은 마련되지 않은 상태죠.

new test[5]; 를 통해 비로소, 메모리의 빈 공간에 5개의 int형 데이터를 저장할 수 있는 공간이 생깁니다.

그리고 각 배열의 요소는 기본값 0으로 초기화됩니다.

이때 배열 요소의 시작은 항상 0번째! 입니다!!!

따라서 위 배열의 요소는 test[0], test[1], test[2], test[3], test[4]가 되고,

이렇게 배열의 요소의 붙여진 일련번호인덱스(index)라고 합니다!

끝으로 '=' 연산자를 통해 배열의 주소가 참조 변수 test에 저장됩니다.

엇, 그러면 배열의 선언과 생성은 항상 따로 해야 하나요??

그래서 보통 배열의 선언과 생성을 동시에 하기 위해 이렇게 한 줄로 씁니다!!!

//타입[] 변수명 = new 타입[길이];
int[] test = new int[5];

이번엔 배열에 값을 저장하는 방법에 대해서 알아볼까요?

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

위와 같이 선언한 배열의 크기에 맞게, 해당 인덱스까지 저장이 가능합니다.

그러면 이러한 저장한 값을 꺼내서 쓰려면?

int value = test[2]; 
// test의 2번째 인덱스에 해당하는 값 3을 꺼내서 int형 변수 value에 저장!
System.out.println(test[1]); 
// test의 1번째 인덱스에 해당하는 값 2를 꺼내서 출력!

아주 쉽죠?

이번엔 기본값이 0이 아닌 값으로 초기화시키려면?

int[] test = new int[]{1,2,3,4,5};
//int 값을 5개저장 할 수 있는 배열이며, 해당 배열에는 1,2,3,4,5가 순서대로 저장되게 된다.

이번엔 예제를 통해 배열을 사용하는 방법을 알아보겠습니다.

우선 System.arraycopy()를 이용한 배열의 복사입니다.

for문 대신 System.arraycopy()를 사용하면, 간단하고 빠르게 배열 복사가 가능합니다.

for(int i=0; i < src.length; i++;) { dest[i] = src[i]; }
                       ↓
                       ↓
System.arraycopy(src, 0, dest, 0, src.length);
//src[0]에서 dest[0]으로 src.length개 데이터 복사

예제를 통해서 arraycopy에 대해서 알아보죠!

public class ArrayExam {
	public static void main(String[] args) {
		char[] abc = {'a', 'b', 'c'};
		char[] num = {'0', '1', '2', '3', '4'};
		
		System.out.println(abc); //abc
		System.out.println(num); //01234

		//배열 abc의 길이와 num의 길이를 합친 크기(8)만큼 배열 rst 생성
		char[] rst = new char[abc.length + num.length];

		System.arraycopy(abc, 0, rst, 0, abc.length); //rst[0]~rst[2] : abc
		System.arraycopy(num, 0, rst, abc.length, num.length); //rst[3]~rst[8] : 01234
		System.out.println(rst); //abc01234
		
		System.arraycopy(abc, 0, num, 0, abc.length); //num[0]~num[2] : abc
		System.out.println(num); //abc34
		
		System.arraycopy(abc, 0, num, 1, 3); //num[1]~num[3] : abc
		System.out.println(num); //aabc4
	}
}

실행결과

100번 눈으로 보는 것보다 코딩으로 실제로 해보시면 이해가 더 빠르실 거예요!

오늘은 int형 배열에 대해서 알아봤습니다.

다음 포스팅엔 string 배열에 대해서 알아보도록 하겠습니다.

오늘도 읽어주신 여러분 감사합니다.:)

 

출처 : 자바의 정석 3rd Edition 내용 정리

728x90
반응형