1. 배열
배열
: 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것
배열의 선언
: 배열을 다루기 위한 참조변수의 선언
선언 방법
// 방법1
int[] age;
// 방법2
String name[];
배열의 생성
: 실제 저장공간을 생성
생성 방법
int[] age; // int 타입의 배열을 다루기 위한 참조변수 age 선언
age = new int[5]; // int 타입의 값 5개를 저장할 수 있는 배열을 생성(new)
- 배열의 시작 주소(메모리 주소)가 참조변수 age에 저장되었고 age는 저장된 주소를 통해 해당 배열을 가리킨다.
(참조변수와 배열이 연결되어 참조변수를 이용해 배열을 다룰 수 있음)
배열의 인덱스
: 각 요소(저장공간)에 자동으로 붙는 일련 번호
- index 의 범위: 0 ~ 배열의 길이-1
class Arrays1_1 {
public static void main(String[] args) {
int[] age = new int[5]; // 선언과 생성 동시에
age[3] = 28;
System.out.println("age[3] = " + age[3]);
int beatitudoAge = age[3];
System.out.println("beatitudoAge = " + beatitudoAge);
System.out.println("age 배열의 전체값 확인");
System.out.println("age[0] = " + age[0]);
System.out.println("age[1] = " + age[1]);
System.out.println("age[2] = " + age[2]);
System.out.println("age[3] = " + age[3]);
System.out.println("age[4] = " + age[4]);
}
}
2. 배열의 길이
배열의 길이
: int 타입의 상수이고, '배열이름.length' 이와 같이 적어 배열의 길이를 구함
3. 배열의 한계점
한 번 생성된 배열은 컴파일 후 실행되는 동안은 그 길이(크기)를 바꿀 수 없다.
→ 배열을 생성하면 연속적인 메모리 공간을 찾아서 주소를 배정하는데
뒤에 연속적인 메모리 공간이 존재한다는 보장이 없어 크기를 바꾸는 것이 불가능.
배열의 크기가 부족하다면?
- 필요한 만큼의 크기를 가진 배열을 새로 생성
- 새로 만든 배열에 기존 배열의 값을 복사해서 저장
public class Arrays2_1 {
public static void main(String[] args) {
int[] arr = new int[10];
System.out.println("배열의 길이 = " + arr.length);
for(int i=0; i<arr.length; i++) {
System.out.println("arr[" + i + "] = " + arr[i]);
}
System.out.println();
// index 범위를 벗어나는 경우 Error
for(int i=0; i< arr.length+1; i++){
System.out.println("arr[" + i +"] = " + arr[i]);
}
}
}
4. 배열의 초기화
배열의 초기화
: 배열의 각 요소에 처음으로 값을 저장하는 것
자동초기화
- 배열은 기본적으로 저장하려는 값의 타입의 기본값으로 자동 초기화를 해줌
자료형(변수타입) | 기본값 |
byte | 0 |
short | 0 |
int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d |
char | '\n0000' |
boolean | false |
참조형 변수(String or any Object) |
초기화 방법
방법 1)
int[] num = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9};
방법 2)
int[] num = {1, 2, 3, 4, 5, 6, 7, 8, 9};
→ new int[] 생략 가능
class Arrays2_2 {
public static void main(String[] args) {
int[] num1 = new int[]{1,2,3,4,5,6,7,8,9};
int[] num2 = {1,2,3,4,5,6,7,8,9};
for (int i = 0; i < num1.length; i++) {
System.out.println("num1[" +i + "] = " + num1[i]);
}
System.out.println();
for (int i = 0; i < num2.length; i++) {
System.out.println("num2[" +i + "] = " + num2[i]);
}
System.out.println();
int[] num3;
// num3 = {1,2,3,4,5,6,7,8,9}; // Error
// 위처럼 나눠서 표현을 하려면 아래처럼 초기화 해야함
int[] num4;
num4 = new int[]{1,2,3,4,5,6,7,8,9};
for (int i = 0; i < num4.length; i++) {
System.out.println("num4[" +i + "] = " + num4[i]);
}
}
}
배열 이용해 총합과 평균 구하기
public class Arrays3_2 {
public static void main(String[] args) {
int sum = 0;
float avg = 0f;
int[] score = {100, 40, 33, 50, 77 ,29};
for(int i=0; i<score.length; i++) {
sum += score[i];
}
avg = sum / (float)(score.length); // float 타입 얻기 위해 형변환
System.out.println("총합 = " + sum);
System.out.println("평균 = " + avg);
}
}
배열 이용해 최대값과 최소값 구하기
public class Arrays3_3 {
public static void main(String[] args) {
int[] score = {65, 97, 88, 43, 33, 91, 28};
int max = score[0];
int min = score[0];
for(int i=1; i<score.length; i++) {
if(max < score[i]) {
max = score[i];
} else if(min > score[i]) {
min = score[i];
}
}
System.out.println("최소값은 " + min + ", 최대값은 " + max);
}
}
배열 이용해 랜덤으로 숫자 섞기
import java.util.Arrays;
public class Arrays3_4 {
public static void main(String[] args) {
int[] numArr = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
System.out.println("원본 = " + Arrays.toString(numArr));
for(int i=0; i<numArr.length; i++) {
int num = (int)(Math.random() * 10);
int tmp = numArr[0];
// 랜덤한 위치의 값과 배열의 첫 번째 수를 서로 바꿔줌
numArr[0] = numArr[num];
numArr[num] = tmp;
System.out.println(i + 1 + " 번째 변경 : " + Arrays.toString(numArr));
}
System.out.println("결과 = " + Arrays.toString(numArr));
}
}
'내일배움캠프(Sparta) > Java Handbook' 카테고리의 다른 글
[Java Handbook] Part 5-1 (0) | 2023.09.12 |
---|---|
[Java Handbook] Part 4-2 (0) | 2023.09.12 |
[Java Handbook] Part 3-2 (0) | 2023.09.12 |
[Java Handbook] Part 3-1 (0) | 2023.09.12 |
[Java Handbook] Part 2-2 (0) | 2023.09.12 |