[작성일: 2023. 01. 16]
배열(Array)
- 동일한 특성을 갖는 여러 개의 변수 모음
- 많은 양의 데이터를 다룰 때 유용함.
- 배열의 각 요소는 서로 연속적임.
학생 100명에 대한 변수
student0001 ~ student1000 : 학생 이름
모든 학생 이름 앞에 knight를 붙여야 하는 경우
Strint[] student = new String[1000] ➡️ 1000개의 String값을 저장할 수 있는 배열 생성
배열의 선언과 생성
- 타입 또는 변수 이름 뒤에 대괄호[]를 붙여 배열을 선언
- 배열을 선언한다고 해서 값을 저장할 공간이 생성되는 것이 아닌, 배열을 다루는데 필요한 변수가 생성됨.
선언 방법 | 선언 예시 |
타입[] 변수이름; | int [] score; |
타입 변수이름 []; | int score[]; String name[]; |
타입[] 변수이름; = new 타입[값] | int[] score = new int[5] 배열의 생성과 선언을 동시에 함 |
배열의 초기화
- 생성된 배열에 처음으로 값을 저장하는 것
// 1번
int[] score = new int[5]; // 크기가 5인 int형 배열을 생성.
score[0] = 100; // 각 요소에 직접 값을 저장함.
score[1] = 90;
score[2] = 80;
score[3] = 70;
score[4] = 60;
// 2번
int[] score = {100, 90, 80, 70, 60};
// 3번
int[] score = new int[] {100, 90, 80, 70, 60}
// 4번
int[] score;
score = new int[] {100, 90, 80, 70, 60}
배열의 활용
배열에 값 저장하고 읽기
score[3] 100; // 배열 score의 4번째 요소에 100을 저장.
int value = score[3]; // 배열 score의 4번째 요소에 저장된 값을 읽어서 value에 저장.
배열이름.length
- 배열의 길이를 알려줌.
int[] score = {100, 90, 80, 70, 60};
for(int i=0; i<6; i++) {
System.out.println(score[i]);
}
⬇️
for(int i=0; i<score.length; i++) {
System.out.println(score[i]);
} // 배열의 길이 6이 출력됨.
다차원 배열의 선언과 생성
- 다차원 배열에서 마지막 차수의 크기를 지정하지 않고 각각 다르게 지정.
int[][] score = new int[5][3]; // 5행 3열의 2차원 배열 생성
//예제
class Ex5_8 {
public static void main(String[] args) {
int[][] score = {
{ 100, 100, 100 },
{ 30, 60, 80 },
{ 80, 90, 65 },
{ 70, 40, 78 }
}; // 4행 3열의 2차원 배열 생성
int sum = 0;
for(int i=0; i < score.length; i++) {
for(int j=0; score[0].length; j++) {
System.out.println("score[%d][%d]=%d%n", i, j, score[i][j]);
sum += score[i][j];
}
}
System.out.println("sum=" + sum);
}
}
배열 복사
for문을 이용한 복사
int[] num = {1, 2, 3, 4, 5};
int[] newNum = new int[10];
for(int i=0; i<num.length; i++){
newNum[i] = num[i]; // 배열 num의 값을 newNum에 저장.
Enhanced for(향상된 for문)
- for문보다 코드 길이가 짧음.
- 순회하는 데이터를 통해 어떤 데이터를 사용하는지 쉽게 알 수 있음.
배열 연습_1
System.out.println("Array Test");
String[] str;
str = new String[5];
str[0] = "AAA";
String[] student1 = new String[5];
String[] student2 = {"A", "B", "C". "D", "E"};
int[] score1 = new int[5];
int[] score2 = {10, 20, 10, 20, 30};
// 모든 학생들의 이름과 점수를 출력하시오.
// Student[학생이름] : **점
// for문 사용
for(int i=0; i<student2.length; i++) {
System.out.println("Student[" + student2[i] + "] : " + score2[i] + "점");
}
배열 연습_2
String[][] school = {{"A", "B"}, {"C", "D"}};
System.out.println(school[0][0]); // A학생
System.out.println(school[1][0]); // C학생
// String[][][] : 지역 + 학교 + 반 → 3차원 배열도 가능하나 잘 사용하지 않음
for(String name : student2) {
System.out.println("[Enhanced For]" + name);
}
// Enhanced for를 이용하여 school의 모든 학생 이름을 출력하시오.
for(String[] sclass : school) {
for(String sname : sclass) {
System.out.println("[Enhanced For2]" + sname);
}
}
for(int i=0; i<2; i++) {
for(int j=0; j<2; j++) {
System.out.println("[Normal For]" + school[i][j]);
}
}
🐣 해당 게시글은 자바의 정석(남궁성 님) 영상으로 함께 공부하며 요약/정리한 글입니다.
🐣 입문 개발자가 작성한 글이므로 틀린 내용이나 오타가 있을 수 있습니다.