728x90
반응형
SMALL
배열이란?
- 동일한 자료형의 순차적 자료 구조이고 유한 집합으로 정의할 수 있습니다.
- 배열은 같은 종류의 데이터를 많이 다뤄야 하는 경우에 사용할 수 있는 가장 기본적인 자료 구조입니다.
- 배열을 구성하는 각각의 값을 배열 요소(element)라고 합니다.
- 배열에서의 위치를 가리키는 숫자를 인덱스(index)라고 합니다.
- 인덱스 연산자[]를 사용하여 빠른 참조가 가능합니다.
- 물리적 위치와 논리적 위치가 동일합니다.
- 배열의 순서는 0부터 시작합니다.
- 자바에서는 객체 배열을 구현한 ArrayList를 많이 활용합니다.
- 배열은 선언되는 형식에 따라 1차원 배열, 2차원 배열뿐만 아니라 그 이상의 다차원 배열로도 선언할 수 있습니다.
1차원 배열
배열 선언
- 2가지 방법이 있습니다.
int[] arr1 = new int[10];
int arr2[] = new int[10];
배열 초기화
- 배열은 선언과 동시에 자료형에 따라 초기화됩니다. (정수는 0, 실수는 0.0, 객체는 null)
- 필요에 따라 초기값을 지정할 수 있습니다.
int[] number = new int[] {10, 20, 30}; // 개수 생략해야 함
int[] number2 = {10, 20, 30}; // new int[] 생략 가능
int[] ids;
ids = new int[] {10, 20, 30} // 선언 후 배열을 생성하는 경우는 new int[] 생략할 수 없음
배열 사용하기
- [] 인덱스 연산자 활용 : 배열 요소가 저장된 메모리의 위치를 연산하여 찾아줍니다.
- 배열을 이용하여 합을 구하기
ArrayTest.java
public class ArrayTest {
public static void main(String[] args) {
int arr1[] = new int[10]; // 배열 선언
int total = 0;
for(int i = 0, num = 1; i < arr1.length; i++, num++) {
arr1[i] = num; // 배열 각 항의 값 설정
}
for(int i = 0; i < arr1.length; i++) {
total += arr1[i];
}
System.out.println(total);
}
}
출력결과
55
배열의 길이와 요소의 개수는 동일하지 않습니다.
- 배열을 선언하면 개수만큼 메모리에 할당되지만, 실제 요소(데이터)가 없는 경우도 있습니다.
- 배열의 length속성은 배열의 개수를 반환해주기 때문에 요소의 개수와는 다릅니다.
length를 활용하여 오류가 나는 경우
double[] dArr = new double[5];
dArr[0] = 1.1;
dArr[1] = 2.1;
dArr[2] = 3.1;
double mtotal = 1;
for(int i = 0; i < dArr.length; i++) {
mtotal *= dArr[i];
}
System.out.println(mtotal);
출력 결과
0.0
배열은 선언과 동시에 자료형에 따라 초기화됩니다. 위의 예제에서는 double형이기 때문에 0.0으로 전부 초기화됩니다. 그럼 1.1, 2.1, 3.1, 0.0, 0.0입니다. 그래서 모든 항을 곱했을 때 4번째와 5번째에 0.0을 곱하므로 출력 결과가 0.0이 됩니다.
요소의 개수에 대한 변수(count)를 따로 유지
위와 같은 예제에서의 문제점은 아래와 같이 해결할 수 있습니다.
double[] dArr = new double[5];
int count = 0;
dArr[0] = 1.1, count++;
dArr[1] = 2.1, count++;
dArr[2] = 3.1, count++;
double mtotal = 1;
for(int i = 0; i < count; i++) {
mtotal *= dArr[i];
}
System.out.println(mtotal);
출력 결과
7.161000000000001
문자 배열을 만들어 A-Z까지 배열에 저장하고 이를 다시 출력하기
public class ArrayTest2 {
public static void main(String[] args) {
char cArr[] = new char[26];
char x = 'A';
for(int i = 0; i < cArr.length; i++) {
cArr[i] = x++;
}
for(int i = 0; i < cArr.length; i++) {
System.out.print(cArr[i] + " ");
}
}
}
출력 결과
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
향상된 for문 사용하기
배열의 n개 요소를 0부터 n-1까지 순차적으로 순회할 때 간단하게 사용할 수 있습니다.
for (변수 : 배열) { ... }
public class ArrayTest2 {
public static void main(String[] args) {
char cArr[] = new char[26];
char x = 'A';
for(int i = 0; i < cArr.length; i++) {
cArr[i] = x++;
}
// for(int i = 0; i < cArr.length; i++) {
// System.out.print(cArr[i] + " ");
// }
for(char alpha : cArr) {
System.out.println(alpha + " " + (int)alpha);
}
}
}
출력 결과
A 65
B 66
C 67
D 68
E 69
F 70
G 71
H 72
I 73
J 74
K 75
L 76
M 77
N 78
O 79
P 80
Q 81
R 82
S 83
T 84
U 85
V 86
W 87
X 88
Y 89
Z 90
728x90
반응형
LIST
'Java' 카테고리의 다른 글
[JAVA] 자바 - 2차원 배열 사용하기 (0) | 2021.11.25 |
---|---|
[JAVA] 자바 - 객체 배열 사용하기 (0) | 2021.11.25 |
[JAVA] 자바 - static 응용 - 싱글톤 패턴 (0) | 2021.11.23 |
[JAVA] 자바 - static 메서드의 구현과 활용, 변수의 유효 범위 (0) | 2021.11.23 |
[JAVA] 자바 - static 변수 (0) | 2021.11.23 |
댓글