📙 목차
🧡 학습 목표
- 배열(Array)이 무엇인지 학습한다.
- 배열의 길이(Array length)와 요소(Array element)를 이해한다.
- 인덱스(index) 를 활용해서 배열의 요소를 탐색하는 방법을 학습한다.
- 향상된 반복문을 학습한다.
- 2차원 배열이 무엇인지 학습한다.
1. 배열(Array)
배열 (Array)
- 비슷한 주제의 데이터들을 하나의 그룹으로 묶어서 표현하는 방법이다.
- 관련된 데이터를 편리하게 관리하기 위해 사용된다.
- 모든 자료형의 종류로 배열을 만들 수 있다.
String name1 = "gygim";
String name2 = "Steve";
String name3 = "Grace";
...
String name1000 = "Isac";
String[] adventurerList = {"gygim", "Steve", "Grace", ...};
배열의 길이 (Array Length)
- 배열에 들어갈 수 있는 데이터의 개수를 의미한다.
- 배열을 만들 때 한 번 크기를 정하면 변경할 수 없다 (: 정적배열)
배열이름.length
int arrLenght = adventurerList.length;
배열의 선언 (Array Declaration)
- new 키워드를 사용해 배열을 선언할 수 있다.
자료형[] 변수이름 = new 자료형[배열의길이];
선언 후 길이 설정
int[] arr;
arr = new int[5];
선언과 길이 설정 동시에
int[] arr = new int[5];
// 문자열 배열 선언
String[] arrA = new String[5];
// 논리형 배열 선언
boolean[] arrB = new boolean[3];
배열의 크기
int[] arr = new int[5];
- int 자료형의 크기: 4바이트
- 길이가 5인 int 형 배열의 크기: 20바이트 (4바이트*5 = 20바이트)
배열의 요소
- 배열 안에 들어있는 각각의 값을 배열의 요소라고 한다.
- 배열 선언과 동시에 배열의 요소를 설정할 수도 있다.
int[] arr = {10, 20, 30, 40, 50}; // ✅ 배열 선언과 동시에 배열의요소 설정
인덱스(index) - 배열의 요소에 접근하는 방법
- index 의 시작은 0
- 인덱스를 통해 원하는 배열의 요소에 빠르게 접근할 수 있다.
int[] arr = {10, 20, 30, 40, 50};
System.out.println("배열의 1번째 요소 = " + arr[0]); // 10
System.out.println("배열의 2번째 요소 = " + arr[1]); // 20
System.out.println("배열의 3번째 요소 = " + arr[2]); // 30
System.out.println("배열의 4번째 요소 = " + arr[3]); // 40
System.out.println("배열의 5번째 요소 = " + arr[4]); // 50
* 인덱스 사용 시 주의사항
- 배열의 범위에 벗어난 요소에 접근하려고 하면 ArrayIndexOutOfBoundsException 에러가 발생한다.
- 인덱스(index) 를 활용할 때는 배열의 범위를 벗어나지 않게 주의해야 한다.
int[] arr = {10, 20, 30, 40, 50}; // 5개의 길이를 가진 배열
System.out.println("배열의 6번째 요소 = " + arr[5]); // ❌ 에러 발생
배열에 정보 삽입, 수정
- 인덱스(index) 를 활용해 각 요소의 값을 삽입, 수정할 수 있다.
int[] arr = new int[5];
arr[0] = 100; // ✅ 1번째 요소를 100로 설정
arr[1] = 200; // ✅ 2번째 요소를 200로 설정
arr[2] = 300; // ✅ 3번째 요소를 300로 설정
arr[3] = 400; // ✅ 4번째 요소를 400로 설정
arr[4] = 500; // ✅ 5번째 요소를 500로 설정
arr[5] = 600; // ❌ 접근 불가
System.out.println("배열의 1번째 요소는 0번째 인덱스: " + arr[0]); // 100
System.out.println("배열의 2번째 요소는 1번째 인덱스: " + arr[1]); // 200
System.out.println("배열의 3번째 요소는 2번째 인덱스: " + arr[2]); // 300
System.out.println("배열의 4번째 요소는 3번째 인덱스: " + arr[3]); // 400
System.out.println("배열의 5번째 요소는 4번째 인덱스: " + arr[4]); // 500
2. 배열 탐색
인덱스(index) 를 활용해 배열을 탐색할 수 있다.
- 변수를 인덱스(index) 로 활용하면 반복문을 통해 쉽게 배열을 탐색할 수 있다.
int[] arr = {1, 2, 3, 4, 5};
for (int i = 0; i < arr.length; i++) {
// ✅ 숫자대신 변수i 를 인덱스 활용
System.out.println("numbers[" + i + "] = " + arr[i]);
}
회차 | 1번째 루프 | 2번째 루프 | 3번재 루프 | 4번째 루프 | 5번째 루프 |
i 변수의 값 | 0 | 1 | 2 | 3 | 4 |
코드 | numbers[0] | numbers[1] | numbers[2] | numbers[3] | numbers[4] |
의미 | 1번재 상자 | 2번재 상자 | 3번재 상자 | 4번재 상자 | 5번재 상자 |
향상된 for 문
- 배열의 모든 요소를 하나씩 꺼내서 활용할 때 편리한 반복문이다.
- index 를 직접 활용하지 못 한다.
- IndexOutOfBoundsException 에러가 발생하지 않는다.
for(배열의요소 : 배열) {
명령문;
}
int[] arr = {100, 200, 300, 400, 500};
for (int a : arr) { // 배열 arr 에서 하나씩 꺼내서 a 에 저장
System.out.println("배열의 각 요소 = " + a);
}
3. 2차원 배열(Two-Dimensional Array)
2차원 배열(Two-Dimensional Array)
- 2차원적인 정보를 표현할 때 적합하다.
- 첫 번째 인덱스는 행 = 가로 방향을 의미
- 두 번째 인덱스는 열 = 세로 방향을 의미
boolean[][] board = new boolean[2][2];
boolean[][] board = {
{true, false}, // 0행의 0열, 0행의 1열
{false, true} // 1행의 0열, 1행의 1열
};
System.out.println(board[0][0]); // true
System.out.println(board[0][1]); // false
System.out.println(board[1][0]); // true
System.out.println(board[1][1]); // false
4. 실습과제
(1) 1차원 배열에서 짝수만 출력하기
아래의 정수 배열이 주어졌을 때 짝수만 출력하세요.
배열 예시: {3, 4, 7, 10, 15, 20}
package chapter1;
public class EvenNumberFinder {
public static void main(String[] args) {
int[] arr = {3, 4, 7, 10, 15, 20};
System.out.print("짝수: ");
for(int a: arr){
if(a%2==0){
System.out.print(a + " ");
}
}
}
}
(2) 1차원 배열의 누적합 구하기
아래의 정수 배열의 누적합을 구하세요.
배열 예시: {2, 5, 8}
package chapter1;
public class PrefixSum {
public static void main(String[] args) {
int[] arr = {2, 5, 8};
int sum=0;
for(int a: arr) {
sum += a;
}
System.out.println("누적합: "+ sum);
}
}
(3) 2차원 배열에서 검은돌(true)의 좌표(x, y) 찾기
// 배열 예시
boolean[][] board = {
{true, false},
{false, true}
};
package chapter1;
public class BlackStoneFinder {
public static void main(String[] args) {
boolean[][] board = {
{true, false},
{false, true}
};
for(int i=0; i<board.length; i++) {
for(int j=0; j<board[i].length; j++) {
if(board[i][j]) {
System.out.printf("검은돌(●) 위치: (%d,%d)\n", i, j);
}
}
}
}
}
'Java > 강의' 카테고리의 다른 글
[📙 Java 문법 종합반] 2-1. 클래스와 객체 (1) | 2025.04.15 |
---|---|
[📙 Java 문법 종합반] 1-10. 메서드 - 모듈화의 시작 (0) | 2025.04.15 |
[📙 Java 문법 종합반] 1-8. 반복문 - 자동화의 첫걸음 (0) | 2025.04.15 |
[📙 Java 문법 종합반] 1-7. 조건문 - 프로그램의 선택지 (0) | 2025.04.15 |
[📙 Java 문법 종합반] 1-6. 연산자 - 계산의 시작 (0) | 2025.04.15 |