2025-08-20 배열, 반복문

Ckd gus·2026년 2월 2일

Java 래퍼 클래스, 반복문, 배열 정리

래퍼 클래스(Wrapper Class)는 기본 타입을 객체로 다루기 위해 사용하는 클래스이다.

기본 타입의 값을 객체로 감싸는 과정을 박싱(Boxing),
포장된 객체에서 다시 기본 타입의 값을 꺼내는 과정을 언박싱(Unboxing)이라고 한다.

아래 블로그를 참고하여 개념을 정리했다.

https://coding-factory.tistory.com/547


반복문 (Loop)

오늘은 while, do while, for, foreach, 중첩 for문과 배열을 함께 배웠다.


while 문

while문은 조건이 참인 동안 반복 실행된다.

변수 초기화;
while (조건식) {
    실행 코드;
    증감식;
}

예제:

int num = 1;

while (num <= 10) {
    if (num % 2 == 0) {
        System.out.println("안녕 " + num);
    }
    num++;
}

⚠️ 증감식이 없으면 무한 루프에 빠지므로 주의해야 한다.


무한 루프 + break

int i = 1;

while (true) {
    if (i == 11) {
        break; // 반복 종료
    }
    System.out.println(i);
    i++;
}

break는 반복문을 즉시 종료시킨다.


continue 사용

continue는 반복을 종료하지 않고 다음 반복으로 넘어간다.

// 짝수만 출력
int i = 0;

while (i++ < 10) {
    if (i % 2 != 0) {
        continue;
    }
    System.out.println(i);
}

do while 문

do while문은 조건과 상관없이 최소 한 번은 실행된다.

int i = 1;

do {
    System.out.println(i);
} while (i++ <= 5);

for 문

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 무한 루프

for (;;) {
    System.out.println("무한 루프");
    break;
}

중첩 for 문

중첩 반복문은 반복문 안에 또 다른 반복문을 사용하는 구조이다.

구구단 출력

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();
}

배열(Array)

배열은 같은 타입의 여러 데이터를 하나로 묶어 관리하는 자료구조이다.

  • 연속된 메모리 공간 사용
  • 인덱스는 0부터 시작
  • 한 번 생성되면 크기 변경 불가

배열 선언

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);

foreach 문

for (int val : scores) {
    System.out.println(val);
}

배열 복사

for문 복사

for (int i = 0; i < arr.length; i++) {
    copyArr[i] = arr[i];
}

System.arraycopy

System.arraycopy(arr, 0, copyArr, 0, arr.length);

Arrays.copyOf / copyOfRange

int[] copy1 = Arrays.copyOf(arr, arr.length);
int[] copy2 = Arrays.copyOfRange(arr, 1, 3);

얕은 복사 vs 깊은 복사

  • 얕은 복사: 주소값만 복사
  • 깊은 복사: 실제 값 자체를 새로운 공간에 복사
copy1[0] = 100;

System.out.println("원본: " + Arrays.toString(arr));
System.out.println("복사본: " + Arrays.toString(copy1));

Arrays 유틸리티 클래스

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));

느낀 점

오늘은 시간이 유독 빨리 지나간 느낌이었다.
부트캠프 시작 전 알고리즘 문제를 어느 정도 풀어본 덕분에
반복문과 배열 내용은 비교적 수월하게 따라갈 수 있었다.

다만 얕은 복사와 깊은 복사의 개념은 아직 완전히 이해되지 않아
추가로 더 공부가 필요할 것 같다.

profile
백엔드 공부중입니다.

0개의 댓글