래퍼 클래스(Wrapper Class)는 기본 타입을 객체로 다루기 위해 사용하는 클래스이다.
기본 타입의 값을 객체로 감싸는 과정을 박싱(Boxing),
포장된 객체에서 다시 기본 타입의 값을 꺼내는 과정을 언박싱(Unboxing)이라고 한다.
아래 블로그를 참고하여 개념을 정리했다.
https://coding-factory.tistory.com/547
오늘은 while, do while, for, foreach, 중첩 for문과 배열을 함께 배웠다.
while문은 조건이 참인 동안 반복 실행된다.
변수 초기화;
while (조건식) {
실행 코드;
증감식;
}
예제:
int num = 1;
while (num <= 10) {
if (num % 2 == 0) {
System.out.println("안녕 " + num);
}
num++;
}
⚠️ 증감식이 없으면 무한 루프에 빠지므로 주의해야 한다.
int i = 1;
while (true) {
if (i == 11) {
break; // 반복 종료
}
System.out.println(i);
i++;
}
break는 반복문을 즉시 종료시킨다.
continue는 반복을 종료하지 않고 다음 반복으로 넘어간다.
// 짝수만 출력
int i = 0;
while (i++ < 10) {
if (i % 2 != 0) {
continue;
}
System.out.println(i);
}
do while문은 조건과 상관없이 최소 한 번은 실행된다.
int i = 1;
do {
System.out.println(i);
} while (i++ <= 5);
for문은 초기화, 조건식, 증감식을 한 줄에 작성한다.
for (초기화; 조건식; 증감식) {
실행 코드;
}
예제:
for (int i = 1; i <= 20; i++) {
System.out.println(i);
}
int sum = 0;
for (int i = 1; i <= 100; i++) {
if (i % 2 == 0) {
sum += i;
}
}
System.out.println(sum);
for (;;) {
System.out.println("무한 루프");
break;
}
중첩 반복문은 반복문 안에 또 다른 반복문을 사용하는 구조이다.
for (int i = 1; i <= 9; i++) {
for (int j = 2; j <= 9; j++) {
System.out.printf("%d * %d = %d\t", j, i, j * i);
}
System.out.println();
}
for (int i = 1; i <= 10; i++) {
for (int j = 1; j <= 10 - i; j++) {
System.out.print(" ");
}
for (int j = 1; j <= (i * 2) - 1; j++) {
System.out.print("*");
}
System.out.println();
}
배열은 같은 타입의 여러 데이터를 하나로 묶어 관리하는 자료구조이다.
int[] scores;
String[] names;
int scores2[];
String names2[];
int[] arr = new int[3];
arr[0] = 10;
int[] arr2 = {10, 20, 30, 40, 50};
int[] arr3 = new int[]{10, 20, 30, 40, 50};
int total = 0;
int[] scores = {95, 87, 100, 73, 82};
for (int i = 0; i < scores.length; i++) {
total += scores[i];
}
System.out.println(total);
System.out.println(total / scores.length);
for (int val : scores) {
System.out.println(val);
}
for (int i = 0; i < arr.length; i++) {
copyArr[i] = arr[i];
}
System.arraycopy(arr, 0, copyArr, 0, arr.length);
int[] copy1 = Arrays.copyOf(arr, arr.length);
int[] copy2 = Arrays.copyOfRange(arr, 1, 3);
copy1[0] = 100;
System.out.println("원본: " + Arrays.toString(arr));
System.out.println("복사본: " + Arrays.toString(copy1));
int[] arr = {1, 2, 3, 4, 5};
System.out.println(Arrays.toString(arr));
int[] arr2 = {9, 8, 2, 10, 4};
Arrays.sort(arr2);
System.out.println(Arrays.toString(arr2));
System.out.println(Arrays.equals(arr, arr2));
오늘은 시간이 유독 빨리 지나간 느낌이었다.
부트캠프 시작 전 알고리즘 문제를 어느 정도 풀어본 덕분에
반복문과 배열 내용은 비교적 수월하게 따라갈 수 있었다.
다만 얕은 복사와 깊은 복사의 개념은 아직 완전히 이해되지 않아
추가로 더 공부가 필요할 것 같다.