[ 2주차 - 0820 ]
금일 커리큘럼
├ 09:00 ~ 12:00 자바 프로그래밍 기초 (반복문 while & for)
└ 13:00 ~ 18:00 자바 프로그래밍 기초 (반복문과 label, 배열)
1. 반복문 (While)
while()문은()내 false값 들어오거나 내부break실행 될때까지 루프.
비교연산 방식
// 비교연산 방식
int i = 0;
while(i < 10) { // 0 ~ 9 반복
System.out.printf("i:%d ", i);
i++; // 증가
}
탈출 방식 (break)
// 탈출 방식
int i = 0;
while(true) {
if(i == 10) break; // 0 ~ 9 반복
System.out.printf("i:%d ", i);
i++;
}
do while 방식
// do-while방식
int i = 0;
do {
System.out.printf("i:%d ", i);
i++;
} while (i < 10); // 0 ~ 9 반복
continue 예시
int i = 0;
while (i++ < 10) {
if(i % 2 != 0) continue; // 홀수 제외 (건너뛰기)
System.out.printf("i:%d ", i);
}
연습 1 ~ 100 합산
int sum = 0, min = 1, max = 100;
int i = min;
while (i <= max) {
sum += i;
i++;
}
System.out.printf("합산 : %d%n", sum);
2. 반복문 (for)
while() 과 다르게 for()은 한 문장으로 루프 정의.
for(루프변수; 조건식; 증감식) {}for(;;)==while(true)
기본 방식
for(int i = 0; i < 10; i++) { // 0 ~ 9
System.out.printf("i:%d, ", i);
}
true 탈출 방식
int i = 0;
for(;;) {
if( i == 10) break; // 0 ~ 9
System.out.printf("i:%d, ", i);
i++;
}
continue 예시
for(int i = 0; i < 10; i++) {
if(i % 2 != 0) continue; // 홀수 제외 (건너뛰기)
System.out.printf("i:%d ", i);
}
이중 반복문
for(int i = 0; i < 5; i++) { // 0 ~ 4
System.out.printf("i:%d = ", i);
for(int j = 0; j < 5; j++) { // 0 ~ 4
System.out.printf("j:%d, ", j);
}
System.out.println();
}
# 실행결과
i:0 = j:0, j:1, j:2, j:3, j:4
i:1 = j:0, j:1, j:2, j:3, j:4
반복문 Label
label은 중첩 반복문에서 특정 반복문을 제어하고 싶을 때 사용
/*
* label인 'outter' 대상은 바깥 for문 (처음for)
* 내부 for문에서 break의 실행을 바깥 for문에 연결됨.
*/
outter:
for(int i = 0; i < 3; i++) {
System.out.printf("i: %d = |", i);
for(int j = 0; j < 10; j++) {
if(i == 2 && j == 5) break outter; // 바깥쪽 반복문 종료
System.out.printf(" j:%d |", j);
}
System.out.println();
}
# 실행 결과
i: 0 = | j:0 | j:1 | j:2 | j:3 | j:4 | j:5 | j:6 | j:7 | j:8 | j:9 |
i: 1 = | j:0 | j:1 | j:2 | j:3 | j:4 | j:5 | j:6 | j:7 | j:8 | j:9 |
i: 2 = | j:0 | j:1 | j:2 | j:3 | j:4 |
3. 배열 (Array)
배열 ? 특정 타입의 여러 데이터를 하나로 묶어서 관리하는 자료구조
- 장졈
- ✅ 인덱스로 빠른 접근 가능
- ✅ 메모리 효율적
- ✅ 반복문과 함께 사용 용이
- 단점
- ❌ 고정된 크기임
- ❌ 삽입삭제 어려움
- ❌ 같은 타입만 가능
선언방식
// 선언 방식
int[] exArr;
exArr = new int[3]{1, 2, 3}; // exArr: [1, 2, 3]
int[] intArr = new int[3]; // intArr: [0, 0, 0]
int[] intArr2 = {0, 5, 0}; // intArr2: [0, 5, 0]
String[] strArr = new String[5]; // strArr: [null, null, null, null, null]
boolean[] bolArr = new boolean[2]; // bolArr : [false, false]
// ...
향상된for문 - 배열읽기
String[] strArr = new String[5];
for(int i = 0; i < strArr.length; i++) {
strArr[i] = "인덱스:" + i;
}
for(String str : strArr) {
System.out.printf("%s, ", str);
}
System.out.println();
// -----------
int[] intArr = {10, 20, 30};
int sum = 0;
for (int num ; intArr) {
sum += num;
}
System.out.printf("합계: %d%n", sum);
# 실행 결과
인덱스:0, 인덱스:1, 인덱스:2, 인덱스:3, 인덱스:4,
합계: 60
- 장점: 코드 간결
- 단점: 인덱스를 사용 불가, 정순회만 가능.
- 사용 시기: 값 읽기용 or 인덱스가 필요 없을 때
4. 배열복사
배열은 일반 자료형과 다르게 타변수를 참조해서 만든배열을 수정하게되면 기존 타변수에 영향 끼침.
int i = 10;
int i2 = i;
i2 = 20;
// i = 10, i2 = 20 (기존복사 영향x)
// 얕은 복사
int[] intArr = {1, 2, 3};
int[] intArr2 = intArr;
intArr2[0] = 100;
// intArr: [100, 2, 3] , intArr2: [100, 2, 3]
// 깊은 복사 (for)
int orgArr = {10, 20, 30};
int copyArr = new int[orgArr.length];
for (int i = 0; i < copyArr.length; i++) {
copyArr[i] = orgArr[i];
}
copyArr[0] = 100;
// orgArr: [10, 20, 30] , copyArr: [100, 20, 30]
Array util 사용 깊은 복사
import java.util.Arrays;
// pre code...
int[] orgArr = {100, 200, 300, 400, 500};
// System.arraycopy() 사용
int[] copyArr1 = new int[orgArr.length];
System.arraycopy(orgArr, 0, copyArr1, 0, orgArr.length);
// 3Arrays.copyOf() 사용
int[] copyArr2 = Arrays.copyOf(orgArr, orgArr.length);
// Arrays.copyOfRange() 사용 (범위 복사)
int[] copyArr3 = Arrays.copyOfRange(orgArr, 1, 4); // 인덱스 1~3
copyArr1[0] = 1;
copyArr2[0] = -1;
copyArr3[0] = -2;
System.out.println("orgArr: " + Arrays.toString(orgArr));
System.out.println("copyArr1: " + Arrays.toString(copyArr1));
System.out.println("copyArr2: " + Arrays.toString(copyArr2));
System.out.println("copyArr3: " + Arrays.toString(copyArr3));
// next code...
# 출력 결과
orgArr: [100, 200, 300, 400, 500]
copyArr1: [1, 200, 300, 400, 500]
copyArr2: [-1, 200, 300, 400, 500]
copyArr3: [-2, 300, 400]
etc.
복습 (java.lang.Integer)
String stVal = "1234";
// String -> int
int num = Integer.parseInt(stVal);
// String -> double
double dd = Double.parseDouble(stVal);
// int -> String
String str = Integer.toString(num);
멋사 부트캠프 개인학습 git : https://github.com/star1431/backend
'멋사 - 부트캠프 19기 : Java > Java' 카테고리의 다른 글
| (08.25) java 기초 - 상속, getter & setter, 오버라이딩 & 오버로딩, 다형성 (0) | 2025.08.25 |
|---|---|
| (08.22) java 기초 - 생성자, this, 메서드체이닝, 패키지, static (2) | 2025.08.25 |
| (08.21) java 기초 - 다차원배열, 객체지향, 클래스, 필드, 메서드 (1) | 2025.08.25 |
| (08.19) java 기초 - 변수, 타입, 형변환, 연산자, 조건문 (2) | 2025.08.25 |
| (08.18) java 기초 - 자바개념, JDK, IDE, 식별, 접근제어자 (0) | 2025.08.25 |