C / C++ 과 JAVA의 배열 문법이 달라 다소 익숙하지 않아 별도로 내용을 정리한다.
또한 배열과 함께 사용하는 새로운 예약어 foreach 에 대하여 정리한다.
1. 배열의 선언
기존 C / C++에서 사용한 배열은 int arr [10] 과 같이 선언했다면 자바에서는 다른 모습으로 선언이 가능하다.
private final static int SIZE = 10;
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] score = new int[SIZE];
int total = 0;
Scanner scan = new Scanner(System.in);
선언된 모습을 C 와 비교해보면 우선 대괄호 [ ] 가 이름의 좌측에 들어간다. 이 괄호 안에는 어떠한 것도 들어가면 안된다.
우항을 보면 new 를 통해 메모리를 동적 할당한다는 것을 알 수 있다. 즉, 배열 자체는 Heap 영역에 할당된다.
C 에서는 단순히 변수의 나열로 취급하여 Stack에 쌓지만 Java 에서는 그렇지 않다.
또한 우항에는 변수의 이름 없이 자료형 [ 크기 ] 형태로 공간을 할당한다. 여기서 SIZE 는 main 위에서 이미 생성된
변수임을 확인할 수 있다. C의 배열 선언에서는 [#define] 된 값 또는 상수로만 배열의 크기를 결정할 수 있었다면,
자바에서는 선언에서도 변수를 사용하여 그 값 만큼 공간이 생긴다는 것을 알 수 있었다.
※ C 에서는 배열의 크기를 선언 후 바꿀 수 없지만 자바에서는 배열의 사이즈를 바꿀 수 있다.
하지만 사이즈 변경 전 데이터들은 모두 사라진다.
2. 배열 사용하기
배열을 사용하는 방법은 C 와 같다. 위의 코드를 이어서 사용하는 코드는 아래와 같다.
for(int i = 0; i < SIZE; i++) {
System.out.print((i+1) + "점수 입력 : ");
score[i] = scan.nextInt(); // 배열에 값 입력하기
}
for(int j = 0; j < SIZE; j++) {
total += score[j]; // 배열 각 인덱스의 값을 total에 합산
}
System.out.println("total = "+ total);
total = 0;
3. foreach 사용하기
C / C++ 에서는 없지만 자바에서는 향상된 for 문을 지원한다.
우선 사용 방법은 다음과 같다.
for(int s : score) { // score 처럼 배열 형태로 들어와야한다. // 값을 입력할 땐 사용할 수 없다.
total += s;
}
System.out.println("total = " + total);
예약어를 보면 일반적인 for 이지만 소괄호 ( ) 의 내용을 보면 기존에 알던 모습과 매우 다르다.
foreach는 배열 형태의 자료구조에서 첫 번째 데이터부터 마지막 데이터를 순차적으로 꺼내와 사용하는데 좋다.
즉,
for ( int s : score )
이 문장의 의미는 score 배열의 각 인덱스의 값을 s 에 넣으며 score 의 사이즈만큼 반복을 한다는 의미이다.
즉, 배열의 사이즈를 몰라도 사이즈만큼 횟수만큼 반복하고 그 후 종료된다.
foreach 를 사용하는데 주의할 점은 꺼내와 사용하는데 초점이 맞춰진 기능이므로 값을 입력하는 용도로는 사용이 불가하다.
<전체 소스코드>
package com.jsg;
import java.util.Scanner;
public class ClassManager {
private final static int SIZE = 10;
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] score = new int[SIZE];
int total = 0;
Scanner scan = new Scanner(System.in);
for(int i = 0; i < SIZE; i++) {
System.out.print((i+1) + "점수 입력 : ");
score[i] = scan.nextInt();
}
for(int j = 0; j < SIZE; j++) {
total += score[j];
}
System.out.println("total = "+ total);
total = 0;
for(int s : score) { // score 처럼 배열 형태로 들어와야한다. // 값을 입력할 땐 사용할 수 없다.
total += s;
}
System.out.println("total = " + total);
}
}

실행결과에서 보면 total 의 값이 두 번 출력된다.
그 중 아래쪽 total 은 foreach 로 연산한 결과가 기존 for문과 동일한 것을 확인할 수 있다.