배열이란?
자바를 배우는데 있어 여러 데이터를 한번에 다루기 시작하는게 바로 배열이라고 한다. 배열은 여러 데이터를 일 열로 나열해 놓은, 여러개 모아놓은 자료구조의 기초이다. 1차 배열과 다차원 배열이 존재한다.
배열의 특징.
- 같은 타입의 데이터만 저장이 가능.
- 인덱스는 0 부터 시작.
- 배열 선언시 인덱스의 길이를 지정.
- 한번 생성된 배열의 길이는 변경 불가능
IN Detail : 1 차 배열
상기 이미지를 참고해보면 길이가 10인 배열을 선언하였고 시작 인덱스는 당연히 0이고 마지막 인덱스는 9 이다. 그리고 각각의 인덱스의 공간(Element) 에는 값이 들어간다. 상기 이미지를 코드로 표현하자면 아래와 같다. 배열의 값은 int 라고 가정해보겠다.
int[] test = new int[10]
int 배열을 선언하고 배열의 length, 크기는 10 으로 지정해주었다.
배열을 정의할때 왜 new 키워드를 사용하나?
Because, 배열도 객체이기 때문. 배열은 참조형 자료로 조금 다른 표현으로 클래스라고도 할 수 있다. 클래스의 인스턴스를 만드는 과정이 바로 new 를 통한 생성이다. (생성자).
IN Detail : 다차원 배열
1차원 배열은 1차원적인 접근이라면 2차원 배열은 선 하나가 더 늘어난 2차원적인 접근이 필요로 하다.
간단하게 0층에 0번방, 1번방, 2번방... \\ 1층에 0번방, 1번방, 2번방... \\ 2층에 0번방, 1번방, 2번방... 이런식으로 이해하면 된다.
상기 이미지를 코드 선언문으로 표현하면 아래와 같다.
int[][] multiArrray = new int[4][3] // -> 행 4 열 3
코드 실습 : 1차원 배열
한 학생의 교과목 점수들을 int 배열에 넣고 그 평균값을 구해보겠다.
1. 모두 더해서 length 로 나눠 평균값 구하기
public static void main(String[] args) throws Exception {
int[] grades = {80, 90, 92, 72};
double result = (double)(grades[0] + grades[1] + grades[2] + grades[3]) / grades.length;
System.out.println("result >> " + result); // 83.5
}
2. for 문을 사용하여 모두 더한다음 length 로 나눠 평균값 구하기.
public static void main(String[] args) throws Exception {
int[] grades = {80, 90, 92, 72};
int total = 0;
for(int i = 0; i < grades.length; i++) {
total += grades[i];
}
System.out.println("average >> " + (double)total / grades.length); // 83.5
}
3. IntStream 을 활용한 평균값 구하기
public static void main(String[] args) throws Exception {
int[] grades = {80, 90, 92, 72};
double average = IntStream.of(grades).average().orElse(0);
System.out.println(average); // 83.5
}
코드 실습 : 2차원 배열
여러 학생들의 교과목 점수들을 다차원 배열로 선언하고 각각 평균값을 구해보자.
public static void main(String[] args) throws Exception {
int[][] grades = {{80, 90, 92, 72}, {40, 98, 34, 58}};
double[] sequenceResult = new double[2];
for(int i = 0; i < grades.length; i ++) {
int total = 0;
int length = 0;
for(int num : grades[i]) {
total += num;
length++;
}
sequenceResult[i] = (double)total/length;
}
System.out.println(Arrays.toString(sequenceResult)); // [83.5, 57.5]
}
첫번째 학생과 두번째 학생의 평균값을 각각 구한 후 double 타입의 1차원 배열에 데이터를 넣어 정리해보았다.
첫번째 for문은 행을 두번째 for 문(향상된 for문) 은 열에 대해 반복문을 실행시켰다.
Reference
'Java 문법 > 코딩은 처음이라 with 자바 (책)' 카테고리의 다른 글
[Java] - 함수(메서드, Function) (0) | 2023.07.16 |
---|---|
[Java] - 제어문4 : 조건문 - switch 문 (0) | 2023.03.12 |
[Java] - 제어문3 : while 문 (0) | 2023.03.12 |
[Java] - 제어문2 : 조건문 - if 문 (1) | 2023.03.12 |
[Java] - 제어문1 : for 문 && 향상된 for 문 (0) | 2023.03.12 |