● 배열
- 저장공간의 나열
● 배열 사용 목적
1. 변수를 여러 개 선언하면 이름도 여러 개 생기는데, 이 때 각 저장공간을 관리하기가 불편하다.
따라서 n칸 배열을 한 번 선언하면 저장공간도 여러 개 생기고, 이름도 한 개이기 때문에 관리하기 편하다.
2. 규칙성이 없는 값에 규칙성을 부여하기 위해 사용한다.
● 배열의 선언
1. 자료형[] 배열명 = {값1, 값2, ...};
- 어떤 값을 넣을 지 알 때 사용한다.
2. 자료형[] 배열명 = new 자료형[칸수];
- 어떤 값을 넣을 지는 모르나, 몇 칸 만들 지는 알 때 사용한다.
3. 자료형[] 배열명 = null;
배열명 = new 자료형[칸수];
- 어떤 값을 넣을 지도 모르고, 몇 칸 만들 지도 모를 때 사용한다.
※ new
- Heap 메모리에 할당, 초기값으로 자동 초기화
※ null
- 주소의 초기값
※ 자바에서 배열은 항상 Heap(동적 메모리)에 할당되기 때문에 메모리 상, 동적 배열만 존재한다.
● 배열의 구조
(ex) int[] arData = {7, 9, 2, 1, 4};
- arData라는 이름의 저장공간은 한 개 만들어지며, 여기에는 한 개의 값만 담을 수 있다.
- 5개의 값을 담기 위해서는 5칸이 필요하며, 이는 Heap에 할당된다.
- 5칸의 저장공간 중 첫번째 저장공간의 주소값이 arData 저장공간으로 들어가며,다음 주소에 접근하기 위해서는
+ n을 한다.
→ 예를 들어, arData + 3은 1이라는 값이 담긴 저장소의 주소값이 되며, *(arData + 3)은 해당 주소에 가서 읽어온
1이라는 값이 된다.
- JAVA에서는 직접 주소에 접근하는 연산자가 없기 때문에 위와 같은 식을 []로 치환하여 사용하며, arData[3]으로
사용한다.
- 각각의 방 번호는 index라고 부르며, 배열은 시작 주소를 가지고 있기 때문에 인덱스 번호는 항상 0부터 시작된다.
※ length
- 배열을 선언하면 length라는 상수가 선언되고, 해당 배열의 길이가 담긴다.
- 배열명.length로 사용하게 된다.
● 배열의 사용
- int[] arData = new int[4]; // arData는 저장공간이다.
- arData[0] = 10; // arData는 저장공간이다.
- arData[0] + 9; // arData는 값이다.(10 + 9 = 19)
- System.out.println(arData); // arData는 주소값이다.
- arData[2] = arData[0] + arData[1]; // 저장공간, 값, 값(arData[0] : 10, arData[1] : 0(초기값이 0이다), arData[2] : 10)
- System.out.println(arData[4]); // 결과 : 오류 발생(인덱스 범위를 벗어났다.)
실습(배열(1))
1. '3, 5, 1, 9, 7'의 값을 가진 배열을 선언한 후 출력하기
public class ArTest {
public static void main(String[] args) {
int[] arData = {3, 5, 1, 9, 7};
for (int i = 0; i < arData.length; i++) { // arData.length : 5
System.out.println(arData[i]);
}
}
}
![](https://blog.kakaocdn.net/dn/berXqL/btrtOy93W7h/K33PlY1yA6OorRvWPnoFPK/img.png)
2. 선언된 배열에 '5, 4, 3, 2, 1' 값을 넣고 출력하기
public class ArTest {
public static void main(String[] args) {
int[] arData = {3, 5, 1, 9, 7};
for (int i = 0; i < arData.length; i++) {
arData[i] = 5 - i; // 5 - 0, 5 - 1, 5 - 2, ...
System.out.println(arData[i]);
}
}
}
![](https://blog.kakaocdn.net/dn/szxQq/btrt3eB4GGy/YjOC97XBNRri83trrujoVK/img.png)
실습(배열(2))
1. 1~10까지 배열에 담고 출력하기
import java.util.Scanner;
public class ArTask1 {
public static void main(String[] args) {
int[] arData = new int[10]; // arData의 크기는 10이다.
for (int i = 0; i < arData.length; i++) {
arData[i] = i + 1;
System.out.println(arData[i]);
}
}
}
![](https://blog.kakaocdn.net/dn/98WqC/btrt1Jbf39H/sLEFLNCnaWHybIFJhrHCJ0/img.png)
2. 10~1까지 중 짝수만 배열에 담고 출력하기
import java.util.Scanner;
public class ArTask1 {
public static void main(String[] args) {
int[] arData = new int[5]; // 출력하려는 숫자의 개수가 5개이므로 크기를 5로 선언한다.
for (int i = 0; i < arData.length; i++) {
arData[i] = (5 - i) * 2; // (5 - 0) * 2, (5 - 1) * 2, (5 - 2) * 2, ...
System.out.println(arData[i]);
}
}
}
![](https://blog.kakaocdn.net/dn/Iz94Y/btrt3QnxsB4/RcvHIo1B5kfrCHJkJDjZy1/img.png)
3. 1~100까지 배열에 담은 후 홀수만 출력하기
import java.util.Scanner;
public class ArTask1 {
public static void main(String[] args) {
int[] arData = new int[100]; // 배열에 담은 후 출력이므로 크기를 100으로 선언한다.
for (int i = 0; i < arData.length; i++) {
arData[i] = i + 1; // arData[0] = 0 + 1
if(arData[i] % 2 != 0) { // arData[i]의 값이 홀수라면
System.out.println(arData[i]);
}
}
}
}
![](https://blog.kakaocdn.net/dn/cQYNh8/btrtWt1RyD4/KcdJuDmqKteGHwJljKh4Z0/img.png)
4. 1~100까지 배열에 담은 후 짝수의 합 출력하기
import java.util.Scanner;
public class ArTask1 {
public static void main(String[] args) {
int[] arData = new int[100];
int total = 0; // 짝수의 합을 담을 변수
for (int i = 0; i < arData.length; i++) {
arData[i] = i + 1;
if(arData[i] % 2 == 0) { // arData[i]의 값이 짝수라면
total += arData[i]; // total = total + arData[i]
}
}
System.out.println(total);
}
}
![](https://blog.kakaocdn.net/dn/IHOTN/btrtOy3nCbF/5SYJiWhrsnA1Qv5MCdOfPK/img.png)
5. A~F까지 배열에 담고 출력하기
import java.util.Scanner;
public class ArTask1 {
public static void main(String[] args) {
char[] arData = new char[6]; // A ~ F는 6개이다.
for (int i = 0; i < arData.length; i++) {
arData[i] = (char)(i + 65); // 0 + 65, 1 + 65, ...
System.out.println(arData[i]);
}
}
}
![](https://blog.kakaocdn.net/dn/cGSH7x/btrtXsurVcL/U0AANUDqNyiYG3T9syfpG0/img.png)
6. A~F까지 중 C를 제외하고 배열에 담은 후 출력하기
import java.util.Scanner;
public class ArTask1 {
public static void main(String[] args) {
char[] arData = new char[5]; // A ~ F 중 C를 제외한 후 출력하므로 크기를 5로 선언한다.
int index = 0;
for (int i = 0; i < arData.length; i++) {
// for문에서는 i가 반복 횟수를 결정짓는다.
// 만약 i를 직접 증가시키면 반복횟수가 줄어든다.
// 따라서 i값을 index 변수에 담아놓고, index를 증가시킨다.
index = i;
if(i > 1) {
index++;
}
arData[i] = (char)(index + 65); // 0 + 65, 1 + 65, ...
System.out.println(arData[i]);
}
}
}
![](https://blog.kakaocdn.net/dn/RPXpi/btrtYT6xh8I/jdTFfAMSbbGCXAgLUZyokK/img.png)
'웹 개발 > Java' 카테고리의 다른 글
[Web_JAVA] 11 (0) | 2022.02.25 |
---|---|
[Web_JAVA] 10 (0) | 2022.02.24 |
[Web_JAVA] 08 (0) | 2022.02.22 |
[Web_JAVA] 07 (0) | 2022.02.21 |
[Web_JAVA] 06 (0) | 2022.02.20 |