배열(array)은 정말 자주 쓰이는 자료형이다.
배열은 하나의 블록안에 여러 데이터들을 모아 집합시켜 저장함으로써 데이터를 구조적으로 다루는데 도와준다.
같은 타입의 변수를 반복해서 선언하고 반복해서 사용하는 문제를 배열을 통해서 해결할 수 있다.
1.배열 변수 선언
- 배열을 사용하려면 int[] students; 와 같이 배열 변수를 선언해야함.
- 변수 선언을 한다고 사용할 수 있는 배열이 만들어진게 아님.
2.배열 생성
- students = new int[5];와 같이 배열을 생성한다.
- 선언과 생성을 동시에 할 수도 있다. ex) int[] students = new int[5];
3.배열의 초기화
- int[] students = new int[5]; 로 만든 배열에는 총 5개의 int형 변수가 만들어지고, 내부값을 자바에서 자동으로 초기화한다. 숫자는 0, boolean은 false, String은 null로 초기화 된다.
public static void main(String[] args) {
int[] students; //배열 변수 선언
students = new int[]{90,80,70,60,50,40,30,20,10,0}; //배열 생성과 초기화 동시에
//= int[] students = new int[]{90,80,70,60,50,40,30,20,10,0};
for (int i = 0; i < students.length; i++) {
System.out.println("학생" + (i+1) + " 점수 : " + students[i]);
}
}
/*
실행결과
학생1 점수 : 90
학생2 점수 : 80
학생3 점수 : 70
학생4 점수 : 60
학생5 점수 : 50
학생6 점수 : 40
학생7 점수 : 30
학생8 점수 : 20
학생9 점수 : 10
학생10 점수 : 0
*/
4. 배열의 참조값
public static void main(String[] args) {
int[] students;
students = new int[]{90,80,70,60,50,40,30,20,10,0};
System.out.println(students);
}
/*
실행결과 : [I@723279cf
*/
배열의 값을 얻으려면 students라는 배열의 변수로 직접접근을 하면 안되고, students[0] 이런식으로 값을 꺼내서 써야한다.
그 이유는 students라는 배열 변수에는 배열의 참조값이 들어가기 때문인데, 참조값이란 배열이 있는 주소(메모리 주소)라고 생각하면 된다.
5. 반복문을 통한 배열의 초기화와 출력
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("입력받을 숫자의 개수를 입력하세요");
int count = scanner.nextInt();
int[] arr = new int[count];
int total = 0;
double average;
System.out.println(count + "개의 숫자를 입력하세요 : ");
for (int i = 0; i < count; i++) {
arr[i] = scanner.nextInt();
total += arr[i];
}
System.out.println("입력한 숫자 목록");
for (int i = 0; i < count; i++) {
System.out.println(arr[i]);
}
average = total / count;
System.out.println("입력한 정수의 합계 : " + total);
System.out.println("입력한 정수의 평균 : " + average);
}
/*
실행결과
입력받을 숫자의 개수를 입력하세요
5
5개의 숫자를 입력하세요 :
1
2
3
4
5
입력한 숫자 목록
1
2
3
4
5
입력한 정수의 합계 : 15
입력한 정수의 평균 : 3.0
*/
사용자가 입력받을 수의 개수를 정하고,그 개수만큼 배열을 생성한다음 그 숫자를 배열 각인덱스에 할당해서 출력 후 합계와 평균까지 구하는 예제이다.
6. 2차원 배열
위에 설명한 배열들은 1차원 배열이고, 2차원 배열은 말그대로 하나의 차원이 추가된 배열이다.
행과 열로 구성되며 중첩 for문과 시너지가 좋다.
1) 배열 변수 선언
- 배열을 사용하려면 int[][] students; 와 같이 배열 변수를 선언해야함.
- 변수 선언을 한다고 사용할 수 있는 배열이 만들어진게 아님.
2) 배열 생성
- students = new int[5][3];와 같이 배열을 생성한다.
- 선언과 생성을 동시에 할 수도 있다. ex) int[] students = new int[5][3];
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("학생수를 입력하세요 : ");
int studentCount = scanner.nextInt();
int[][] scores = new int[studentCount][3];
String[] subjects = {"국어","영어","수학"};
for (int i = 0; i < studentCount; i++) {
System.out.println((i+1) + "번 학생의 성적을 입력하세요.");
for (int j = 0; j < subjects.length; j++) {
System.out.print(subjects[j] + " 점수 : ");
scores[i][j] = scanner.nextInt();
}
}
for (int i = 0; i < studentCount; i++) {
int total = 0;
for (int j = 0; j < subjects.length; j++) {
total += scores[i][j];
}
double average = total / 3.0;
System.out.println((i+1)+"번 학생의 총점 : "+ total + ", 평균 : "+average);
}
}
/*
실행결과
학생수를 입력하세요 : 3
1번 학생의 성적을 입력하세요.
국어 점수 : 80
영어 점수 : 70
수학 점수 : 90
2번 학생의 성적을 입력하세요.
국어 점수 : 0
영어 점수 : 100
수학 점수 : 100
3번 학생의 성적을 입력하세요.
국어 점수 : 70
영어 점수 : 70
수학 점수 : 70
1번 학생의 총점 : 240, 평균 : 80.0
2번 학생의 총점 : 200, 평균 : 66.66666666666667
3번 학생의 총점 : 210, 평균 : 70.0
*/
사용자에게 학생수를 입력받아 배열을 생성하고, 과목별 점수를 입력받아 점수와 총점,평균을 출력하는 예제이다.
정리
- 배열을 선언하기만 하면 사용할 수 없고, int[] students = new int[5]; 처럼 생성까지 해주어야 사용 가능하다.
- 배열의 요소의 값을 쓰려면 students라는 배열 변수를 사용하면 안되고 students[0] 이런식으로 사용해야 한다.
- students라는 배열 변수에는 배열의 참조값이 담겨있다.
- 기본적으로 자바는 숫자는 0, boolean은 false, String은 null로 각 요소를 초기화해준다.
'JAVA' 카테고리의 다른 글
| [자바/JAVA] - 메서드(Method), 메서드 오버로딩(Overloading) (1) | 2024.03.24 |
|---|---|
| [자바/JAVA] - 향상된 for문, for-each문, 개선된 for문 (0) | 2024.03.24 |
| [자바/JAVA] - Scanner (예제 있음) (0) | 2024.03.23 |
| [자바/JAVA] - 스코프 (Scope) (1) | 2024.03.22 |
| [자바/JAVA] - 반복문 (for, while, do-while) (0) | 2024.03.22 |