[Java] 배열의 여러가지 선언 및 초기화 방법
- Language/Java
- 2018. 10. 1.
배열이란 동일한 자료형으로 선언된 데이터 공간을 메모리 상에 연속적으로 나열하여 데이터 관리의 효율성을 높이는 것입니다. 변수는 한개의 데이터만 저장할 수 있습니다. 따라서 저장해야 할 데이터의 수가 많아지면 그만큼 많은 양의 변수를 선언해줘야하는 비효율성이 발생하죠. 그렇기에 좀 더 효율적인 방법이 필요한데 이것이 배열입니다. 배열은 같은 타입의 데이터를 연속된 공간에 나열시키고 각 데이터에 인덱스(index)를 부여해 놓은 자료구조입니다.
여러가지 배열 선언
//int 타입 배열 선언
int[] i_array;
int i_array[];
//배열 생성후 초기화하면 배열의 주소가 할당된다.
int[] i_array = new int[8]; //초기값 0
String[] s_array = new String[8]; //초기값 ""
//배열 선언만 해놓고 나중에 초기화를 시킬수도 있다.
int[] i_array;
i_array = new array[8];
배열을 선언하는 방법은 두가지 방법으로 나눌 수 있습니다.
타입 [] 변수;
타입 변수[];
대괄호는 [] 배열 변수를 선언하는 기호로 사용되는데 타입 뒤에 붙을 수도 있고 변수 뒤에 붙을 수도 있습니다.
배열을 선언하면 크기를 할당하면 위와 같은 배열의 index가 부여됩니다.
배열 변수는 참조변수에 속합니다. 배열도 객체이므로 힙 영역에 생성되고 배열 변수는 힙영역의 배열 객체를 참조하게 됩니다. 따라서 new를 해주지 않으면 해당 배열은 null값을 가지며 null값을 가진 상태에서 배열을 활용하려고 하면 NullPointerException이 발생합니다. 아마 배열을 사용하기 시작하면 많이 보시는 에러메시지일텐데요. NullPointerException이 뜨면 1차적으로 배열의 index값이 제대로 있는지부터 제대로 확인하셔야 합니다.
객체배열 사용법
//길이가 8인 자동차 객체배열 선언
Car [] car = new Car[8];
// 각 배열에는 아직 NULL값만 존재한다.
System.out.println(car[0]);
//배열안의 자동차클래스를 초기화시켜주어야한다.
for(int i=0;i<car.length;i++) {
car[i] = new Car();
}
//배열에 주소값이 제대로 설정된다.
System.out.println(car[0]);
객체배열을 사용하실때는 한가지 주의하셔야 하는것이 자바에서는 Array도 초기화를 시켜야 사용이 가능하지만 Object도 초기화를 시켜주어야 사용이 가능합니다. 그렇기에 배열안에 있는 Class를 전부 초기화 시켜주어야 사용이 가능합니다. 그렇지 않고 그냥 사용하게 되면 그 객체배열은 해당 index에 등록된 reference가 없어 NullPointerException에러가 뜰것입니다
여러가지 배열 초기화
//배열에 특정값 대입하며 선언
int[] i_array = {1,2,3,4,5};
String[] s_array = {"a","b","c","d"};
//배열의 주소를 모두 같은값으로 초기화
Arrays.fill(i_array,1);//i_array의 모든 index값을 1로 초기화
//for문을 통해 값을 대입
for(int i=0;i<i_array.length;i++) {
i_array[i]=i;
}
//foreach문을 통한 배열출력
for(int i:i_array) {
System.out.print(i);
}
배열을 초기화시키는 방법도 여러가지가 있습니다. 배열에 값을 초기화를 시키면서 선언을 해도 되지만 배열의 크기가 커지면 커질수록 노가다가 되기에 대부분 Arrays.fill을 활용하여 배열을 한번에 초기화시키거나 for문을 통해 초기화를 시킵니다.
'Language > Java' 카테고리의 다른 글
[Java] 객체지향 콘솔 성적관리 프로그램 (0) | 2018.10.24 |
---|---|
[Java] Int 배열의 최댓값 최소값 구하기 (9) | 2018.10.02 |
[Java] BufferedReader, BufferedWriter를 활용한 빠른 입출력 (15) | 2018.09.27 |
[Java] 자바 소수점 n번째 자리까지 반올림하기 (8) | 2018.09.27 |