배열이란
같은 타입의 데이터들을 하나로 묶어 넣은 것입니다.
변수가 하나의 박스에 값을 넣는 것을 예시로 들 수 있다면, 배열은 여러 개의 박스가 순차적으로 나열된 것입니다.
배열 선언
// 자료형[] 배열이름
int[] intArr
String[] strArr
boolean[] isArr
배열은 같은 타입의 데이터들을 하나로 묶어 놓은 것입니다. 그러므로 어떤 타입인지 미리 선언을 해주어야 합니다.
배열 생성
배열을 선언했지만, 생성은 되지 않았습니다. 배열을 생성하기 위해서는 new 키워드를 사용합니다.
// 자료형[] 배열이름 = new 자료형[크기];
int[] intArr = new int[3]; // 3의 크기인 int 배열 생성
int size = 10;
int[] intArr2 = new int[size]; // 변수를 활용한 배열 크기 정하기
int[] intArr3 = {2,5,1,2}; // 바로 값을 넣을 수 있다 (크기는 4)
여기서 가장 중요한 점은 배열의 크기가 고정되어 있다는 것입니다. 즉, 크기가 3인 intArr를 생성했을 때, 이를 4로 바꿀 수 없습니다. 크기가 4인 배열을 만들기 위해서는 새로운 배열을 또다시 생성해주어야 합니다.
배열의 요소 접근
배열의 값(요소)들은 인덱스(index)라고 불리는 번호(주소)가 붙어 있고,
이 번호를 통해 배열에 저장된 값에 접근할 수 있습니다.
public class ArrayPractice {
public static void main(String[] args) {
int[] intArr = {1,2,3,4};
System.out.println(intArr[1]); // 출력 2
System.out.println(intArr[2]); // 출력 3
}
}
이때 중요한 것은 배열의 첫 번째 값의 인덱스는 0부터 시작한다는 것입니다.
- intArr[1]은 값 2에 접근합니다.
- intArr[2]은 값 3에 접근합니다.
꼭 기억하세요, 배열은 0부터 시작합니다.
배열과 for문 사용하기
배열은 순차적으로 요소에 접근할 수 있다는 장점이 있습니다. 이때 for문을 주로 사용합니다.
※ 배열의 크기를 알 수 있는 방법은 length를 사용하는 것입니다.
for문 예시:
public class ArrayPractice {
public static void main(String[] args) {
int[] intArr = {1,2,3,4};
for (int i = 0; i < intArr.length; i++) {
System.out.println(intArr[i]);
}
}
}
배열은 0부터 시작하며, 크기가 n이라면 n-1까지 접근할 수 있습니다.
만약 배열의 마지막 인덱스를 넘어간다면 오류가 발생합니다.
오류 발생 코드:
public class ArrayPractice {
public static void main(String[] args) {
int[] intArr = {1,2,3,4};
for (int i = 0; i <= intArr.length; i++) {
System.out.println(intArr[i]);
}
}
}
0부터 시작하며 n-1까지 접근이 가능
문제
1. 크기가 10인 int 배열에 첫 번째 인덱스부터 마지막 인덱스까지 1~10을 넣어보세요.
정답은 더보기를 클릭하세요.
public class ArrayPractice {
public static void main(String[] args) {
int[] intArr = new int[10];
for (int i = 0; i < intArr.length; i++) {
intArr[i] = i+1;
}
for (int i = 0; i < intArr.length; i++) {
System.out.println(intArr[i]);
}
}
}
만약 풀지 못했다면, 다시 한번 내용을 읽어보세요.
2. 1번 문제에서 만든 배열을 활용하여 마지막 인덱스부터 첫 번째 인덱스까지 출력하세요.
정답은 더보기를 클릭하세요.
public class ArrayPractice {
public static void main(String[] args) {
int[] intArr = new int[10];
for (int i = 0; i < intArr.length; i++) {
intArr[i] = i+1;
}
// 배열의 크기 n - 1 번부터 시작 0번째까지 1 감소
for (int i = intArr.length -1; i >= 0; i--) {
System.out.println(intArr[i]);
}
}
}
보너스 지식: 배열과 for-each문
자바에는 for-each라는 특별한 형태의 for문이 있습니다. 이 문법을 사용하면 배열이나 컬렉션의 요소를 순차적으로 하나씩 접근할 수 있습니다. for-each문은 간단하고 가독성이 좋으며, 인덱스를 신경 쓰지 않아도 됩니다.
public class ArrayPractice {
public static void main(String[] args) {
int[] intArr = new int[10];
for (int i = 0; i < intArr.length; i++) {
intArr[i] = i+1;
}
for (int n : intArr) {
System.out.println(n);
}
}
}
위 코드에서 for (int n : intArr)는 배열 intArr의 각 요소를 순차적으로 n에 할당하고 반복문을 수행합니다. 즉, intArr 배열의 첫 번째 요소부터 마지막 요소까지 하나씩 접근하여 출력합니다.
- for-each문은 배열의 모든 요소에 순차적으로 접근합니다.
- 숫자 변수를 선언하지 않고 배열의 각 요소를 처리할 수 있습니다.
장점:
- 코드가 간결하고 가독성이 좋습니다.
- 인덱스를 신경 쓰지 않아도 됩니다.
단점:
- 배열의 특정 요소(예: 인덱스가 짝수인 요소)나 순서를 바꿔야 하는 경우에는 적합하지 않습니다.
예를 들어, 인덱스가 짝수인 배열 요소만 출력하려면 추가적인 조건문이 필요합니다:
public class ArrayPractice {
public static void main(String[] args) {
int[] intArr = new int[10];
for (int i = 0; i < intArr.length; i++) {
intArr[i] = i + 1;
}
for (int i = 0; i < intArr.length; i++) {
if (i % 2 == 0) {
System.out.println(intArr[i]);
}
}
}
}
for-each문을 사용할 때, 특정 인덱스를 사용하지 않기 때문에 인덱스 기반의 조건을 사용하기 어려운 점을 유의해야 합니다.
'Java' 카테고리의 다른 글
[Java] 예외 Exception와 예외 처리 (0) | 2024.07.30 |
---|---|
[Java] OOP 객체 지향 프로그래밍 (0) | 2024.07.15 |
[Java] 반복문 while 문 (0) | 2024.07.05 |
[Java] 반복문 for문 (0) | 2024.07.04 |
[Java] switch 문 (0) | 2024.07.04 |