배열을 사용하는 경우?
같은 타입의 변수가 여러개 필요할 때
1. 기본형 배열
기본형 (boolean, byte, short, char, int, long, float, double) 타입의 배열
1) 배열 선언하기
기본형타입[] 변수명;
기본형타입 변수형[];
[예제1]
public class Array01 {
public static void main(String[] args) {
//배열 객체를 참조. null값을 가지게 됨
int[] array1;
int array2[];
int array3[];
//초기화
array1 = new int[5]; //정수를 5개 가질 수 있는 배열로 초기화
array2 = new int[5];
array3 = new int[0]; //정수를 가질 수 없는 배열로 초기화
System.out.println(array1.length);
System.out.println(array2.length);
System.out.println(array3.length);
}
}
+ 초기화 과정 없으면 에러 발생
→ 출력:
[예제2]
public class Array02 {
public static void main(String[] args) {
int[] array1, array2;
int array3[], array4;
}
}
array1, array2는 모두 배열
array3도 배열 / array4는 배열X
2) 배열 초깃값이 있이 선언하기
기본형 타입[] 변수명 = new 기본형타입[배열크기];
변수형[index값] = 값;
기본형타입[] 변수명 = new 기본형타입[]{값1, 값2, ...};
기본형타입[] 변수명 = {값1, 값2, ...}
[예제]
public class Array03 {
public static void main(String[] args) {
int[] array1 = new int[5];
array1[0] = 1;
array1[1] = 2;
array1[2] = 3;
array1[3] = 4;
array1[4] = 5;
int[] array2 = new int[]{1,2,3,4,5};
int[] array3 = {1,2,3,4,5};
System.out.println("array1의 값 출력");
for (int i=0; i<5; i++)
System.out.println(array1[i]);
System.out.println("array2의 값 출력");
for (int i=0; i<5; i++)
System.out.println(array2[i]);
System.out.println("array3의 값 출력");
for (int i=0; i<5; i++)
System.out.println(array3[i]);
}
}
2. 참조형 배열
배열이 가지는 값이 참조형인 배열
(배열 변수가 참조하는 배열의 공간이 값을 저장하는 것이 아니라 값을 참조하는 것)
[예제1]
public class ItemForArray {
private int price;
private String name;
public ItemForArray(int price, String name) { //불변클래스: 생성할때 값을 넣어주고 값 바꿀수X
this.price = price;
this.name = name;
}
public int getPrice() {
return price;
}
public String getName() {
return name;
}
}
public class Array04 {
public static void main(String[] args) {
ItemForArray[] array1;
ItemForArray array2[];
array1 = new ItemForArray[5];
array2 = new ItemForArray[5];
array1[0] = new ItemForArray(500, "item01"); //해당 인스턴스를 참조
array1[1] = new ItemForArray(1000, "item02");
ItemForArray i1 = new ItemForArray(500, "itemAAA");
System.out.println(array1[0].getName());
System.out.println(i1.getName());
}
}
출력:
[예제2]
public class Array05 {
public static void main(String[] args) {
ItemForArray[] array1 = new ItemForArray[3];
array1[0]= new ItemForArray(500, "사과");
array1[1]= new ItemForArray(300, "바나나");
array1[2]= new ItemForArray(900, "수박");
ItemForArray[] array2 = new ItemForArray[]{new ItemForArray(500, "사과"),
new ItemForArray(300, "바나나"),
new ItemForArray(900, "수박")};
ItemForArray[] array3 = {new ItemForArray(500, "사과"),
new ItemForArray(300, "바나나"),
new ItemForArray(900, "수박")};
System.out.println(array1[0].getName());
System.out.println(array1[0].getPrice());
System.out.println(array1[1].getName());
System.out.println(array1[1].getPrice());
System.out.println(array1[2].getName());
System.out.println(array1[2].getPrice());
}
}
출력:
[발생 오류]
- NullPointException
double[] array1 = new double[5];
double[] array2 = {1.5, 2.4, 3.5};
double[] array3 = null;
System.out.println(array1.length);
System.out.println(array2.length);
System.out.println(array3.length); //에러 발생
null값으로 초기화 되거나 초기화 되지 않은 배열의 길이를 출력할 때 발생
- ArrayIndexOutOfBoundsException
double[] array = {1.5, 2.4, 3.5};
System.out.println(array[0]);
System.out.println(array[1]);
System.out.println(array[2]);
System.out.println(array[3]); //에러 발생
배열의 길이 범위 외의 인덱스를 출력할 때 발생
3. 이차원 배열
배열이 또다른 배열을 가르킴
타입[][] 변수명 = new 타입[행의수][열의수];
변수명[행인덱스][열인덱스] = 값;
[예제]
[코드]
public class Array08 {
public static void main(String[] args) {
int[][] array = new int[2][3];
array[0][0] = 0;
array[0][1] = 1;
array[0][2] = 2;
array[1][0] = 3;
array[1][1] = 4;
array[1][2] = 5;
for (int i = 0 ; i < array.length ; i++){
for (int j = 0; j < array.length ; j++) {
System.out.println(array[i][j] + "\t");
}
System.out.println();
}
}
}
출력:
- 이차원 가변 배열의 선언과 초기화
· 선언
타입[][] 변수명 = new 타입[행의수][];
변수명[행의인덱스] = new 타입[열의수];
int[][] koreanScoreArray = new int[3][];
koreanScoreArray[0] = new int[20];
koreanScoreArray[1] = new int[19];
koreanScoreArray[2] = new int[21];
가변 배열의 출력
for (int i = 0 ; i < array.length ; i++){
for (int j = 0; j < array[i].length ; j++) {
System.out.println(array[i][j] + "\t");
}
System.out.println();
}
· 초기화
int[][] array = {{0,1}, {2,3,4}};
4. for each 문
- 배열값들을 쉽게 출력할 수 있게 도와준다.
for (타입 변수명 : 배열명){
...
}
public class Array12 {
public static void main(String[] args) {
int[] array = {1,2,3,4,5};
for (int i : array){
System.out.println(i);
}
}
}
i를 array 배열에서 없어질때까지 꺼낸다
[예제]
public class Array13 {
public static void main(String[] args) {
ItemForArray[] array = new ItemForArray[3];
array[0]= new ItemForArray(500, "사과");
array[1]= new ItemForArray(300, "바나나");
array[2]= new ItemForArray(900, "수박");
for (ItemForArray item : array){
System.out.println(item.getName());
System.out.println(item.getPrice());
}
}
}
'[즐거운 자바 강좌] 정리' 카테고리의 다른 글
[즐거운 자바 강좌] 섹션6 - 주석문 & 예외문(Exception) (0) | 2024.04.02 |
---|---|
[즐거운 자바] 섹션 5 - 배열 Arrays클래스 (0) | 2024.03.31 |
[즐거운 자바 강좌] 섹션4 - 팩토리 메소드(Factory Method) 패턴 (0) | 2024.03.31 |
[즐거운 자바 강좌] 섹션4 - 인터페이스(interface) (3) | 2024.03.31 |
[즐거운 자바 강의] 섹션4 - 객체지향 문법 (3) (1) | 2024.03.31 |