배열
- 배열은 같은 타입의 값을 여러 개 및 연속적으로 저장할 수 있다.
- 배열을 이용하면 하나의 변수명으로 여러 개의 데이터를 관리할 수 있다.
- 배열은 순서대로 번호(인덱스)가 붙은 요소들이 연속적인 형태로 저장된다.
- 각 요소에 부여되는 번호(인덱스)는 0번부터 시작하며, 각 요소마다 순서대로 번호(인덱스)가 부여된다.
- 인덱스의 범위는 다음과 같다
- 0 <= 인덱스번호 < 배열의 크기
- 배열에 저장된 데이터는 번호(인덱스)로 각 요소에 접근할 수 있다.
- 자바의 배열은 한 번 정해진 크기를 변경할 수 없다.
- 배열을 생성할 때 크기를 반드시 지정하거나, 배열에 저장할 값을 구체적으로 나열해야한다.
- 배열객체의 각 칸은 해당 타입의 기본값으로 자동으로 초기화 된다
배열의 생성
배열 리터럴을 이용한 배열객체 생성
int[] arr1 = {10, 20, 30};
double[] arr2 = {10.1, 6.8, 4.2, 7.7};
String[] arr3 = {"김","이","박","최"};
new 키워드를 이용해서 빈 배열객체 생성
빈 배열객체의 각 저장소는 저장된 타입의 기본값으로 초기화 되어 있다.
int [] arr1 = new int[5]; // int타입은 0
double[] arr2 = new double[4]; // double타입은 0.0
String[] arr3 = new String[3]; // String은 null. null은 객체를 참조하지 못하게 하는 값
//배열의 크기를 생략할 수 없다.
// 배열객체의 0번째 저장소에 값 저장하기
arr1[0] = 10;
arr2[0] = 3.14;
arr3[0] = "서울";
new 키워드를 이용해서 값을 가지는 배열객체 생성하기
int[] arr1 = new int[]{10, 20, 30}
double[] arr2 = new double[]{3.14, 1.59, 3.88};
String [] arr3 = new String[]{"서울", "수원", "대구"};
배열에 엑세스하기
- 배열의 각 저장소에 엑세스는 배열의 인덱스를 이용한다
형식
//배열에 값 저장하기
참조변수명[인덱스] = 값;
//배열에 저장된 값 사용하기
System.out.println(참조변수명[인덱스]);
배열의 길이 조회하기
참조변수명.length;
- 배열객체에는 length라는 프로퍼티가 있다.
- 프로퍼티는 객체의 구성요소고, 객체의 고유한 값을 저장하고 있다.
- 배열의 길이는 변경할 수 없다.
배열 객체의 활용
배열객체의 생성 목적은 같은 데이터 타입의 값들을 하나의 이름으로 관리할 수 있다.
인덱스를 활용해서 배열의 각 저장소를 쉽게 엑세스할 수 있다
String name1 = "서울";
String name2 = "대전";
String name3 = "대구";
String name4 = "부산";
그동안 우리는 String 값을 저장할 때 이런식으로 String을 활용해서 하나씩 만들곤 했다
System.out.println(name1);
System.out.println(name2);
System.out.println(name3);
System.out.println(name4);
출력할 때도 이런식으로 반복해서 써야했지만
배열을 사용하면 좀 더 편하게 저장하고 출력할 수 있음을 알 수 있다
String[] names = {"서울", "대전", "대구", "부산"};
for (int index=0; index<3; index++) {
System.out.println(names[index]);
}
String 배열을 이용해서 같은 타입의 데이터들을 저장하고 반복문인 for문을 통하여 배열의 0번째 인덱스부터 인덱스의 끝인 3번째 인덱스까지 자동으로 출력하게 할 수 있다.
배열을 활용한 국어점수의 평균, 영어점수의 평균, 수학점수의 평균을 계산하여 출력하기
int[] korScores = {80, 80, 90, 70, 30, 50};
int[] engScores = {100, 70, 60, 50, 40, 80};
int[] mathScores = {90, 70, 40, 80, 100, 70};
// 합계를 계산하기 위한 int타입의 변수
int korTotal = 0;
int engTotal = 0;
int mathTotal = 0;
// 반복문을 활용해서 배열 안에 있는 값들을 Total변수에 저장하기
for (int index=0; index<korScores.length; index++) {
korTotal += korScores[index];
}
for (int index=0; index<engScores.length; index++) {
engTotal += engScores[index];
}
for (int index=0; index<mathScores.length; index++) {
mathTotal += mathScores[index];
}
// 평균을 계산하기 위한 int 타입의 변수
int korAvg = korTotal/korScores.length;
int engAvg = engTotal/engScores.length;
int mathAvg = mathTotal/mathScores.length;
// 평균값 출력
System.out.println("국어점수 평균 : "+ korAvg);
System.out.println("영어점수 평균 : "+ engAvg);
System.out.println("수학점수 평균 : "+ mathAvg);
향상된 for문을 사용하면 배열의 0번째부터 배열의 끝까지 쉽게 값을 구할 수 있다.
// 향상된 for문을 사용해서 출력해보기
for (int value : korScores) {
korTotal += value;
}
for (int value : engScores) {
engTotal += value;
}
for (int value : mathScores) {
mathTotal += value;
}
배열과 관련된 오류내용 확인하기
// 배열의 인덱스 범위를 벗어났을 때
int[] arr1 = {10, 20, 30};
System.out.println(arr[3]);
ArrayIndexOutOfBoundsException 예외발생
임의의 정수 값을 입력받아서 그 중에서 가장 큰 값을 찾기
지정된 배열에 입력한 숫자가 저장된 위치를 알아내기
결과는
저장된 위치 : 4번째로 나온다
22번째 줄에 (position+1) 로 한 이유는 그냥 position으로 출력할 경우
인덱스 번호인 3으로 출력이 된다. ( 인덱스는 0으로 시작되기 때문)
그러나 보통 '번째'라는 말을 사용할 때 '0번째' 라고 시작하는 것이 아닌 '1번째'라고 사용하기 때문에
(position+1) 로 출력을 하게끔 했다
다차원 배열
다차원 배열은 2차원 배열의 형식
배열 리터럴을 이용한 2차원 배열객체 생성하기
// 자료형[][] 참조변수 = { {값, 값, 값}, {값, 값, 값} };
int[][] arr1 = { {11,22,33}, {44,55,66}};
new 키워드를 이용한 2차원 빈 배열객체 생성하기
// 자료형[][] 참조변수 = new 자료형[rows][cols];
int[][] arr2 = new int[2][3];
'Java' 카테고리의 다른 글
Java_클래스와 메소드, 오버로딩(oop) (0) | 2023.11.01 |
---|---|
Java_객체지향프로그래밍 (oop) (0) | 2023.11.01 |
Java_반복문(for문, while문) (0) | 2023.10.27 |
Java_조건문( if문과 switch문 ) (0) | 2023.10.26 |
Java_타입의 형변환 (0) | 2023.10.24 |