T_era
[JAVA] 반복문 본문
(do)While의 장점
- 명확하지 않은 조건일 때 사용하기 좋다
for의 장점
- 명확한 조건을 가지고 있을 때 사용하기 좋다
예1) while의 사용 용도
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(true){
System.out.println("종료하시겠습니까? Y/N");
if(sc.nextLine().equals("Y")) {
break;
}
}
}
}
- 이 코드와 같이 사용자가 임의로 조작해야하는 경우는 while을 사용하는 것이 편리하다
- 마찬가지로 do-while의 경우도 한번은 무조건 실행하는 것일 뿐 사용하는 목적은 비슷하다
예2) while의 사용 용도 part 2
public class Main {
public static void main(String[] args) {
int i = 0;
while(i < 10){
System.out.println(i);
i++;
}
System.out.println(i + "번 반복했습니다!");
}
}
- 카운터변수를 이후에 이용할 필요가 있을 때 사용하는 것도 좋은 방법이다.
- 단, for문이라고 못할 것은 아니기 때문에 이 부분은 취향의 영역
foreach문
- 배열, 리스트, 문자열을 대상으로 반복문을 수행해야하면 사용하기 좋다
public class Main {
public static void main(String[] args) {
char[] myChar = {'a', 'b', 'c'};
// 예1
for(int i = 0; i < myChar.length; i++){
System.out.println(myChar[i]);
}
// 예2
for(Character c : myChar){
System.out.println(c);
}
}
}
- 예1 코드의 경우는 배열의 크기를 구해서 정수형 변수에 매칭되는 값을 찾는다
- 예2 코드의 경우는 배열의 값을 하나씩 바로 가져온다
장점) 코드가 간결해지고 편의성이 더해진다
단점) 어떤 배열, 리스트를 사용하냐에 따라서 성능차이가 발생한다
*** 배열의 경우 일반for문이 빠르게 작동하고, list의 경우 비슷하다, linkedList는 foreach가 더 빠르다** *
- 결국 foreach가 메모리를 통한 값을 가져오는 행동이라 메모리 영역에서 작동하는 linkedList에서 효율적이게 된다
중첩 반복문의 문제점
- 단순 계산으로 시간복잡도가 O(n^2)이 된다.
- 가벼운 코드면 크게 상관없지만 무거워질 수록 유의미한 실행속도 차이가 난다
- 이에 대한 대체 방법으로 재귀 함수가 있다. (재귀함수의 시간복잡도는 O(NlogN) 반복이 있는 경우에서 가장 효율적인 시간복잡도)←이 부분의 알고리즘은 도움이 많이 되기 때문에 한번쯤 공부해보는 것을 추천한다
LinkedList
- 일반 배열,리스트는 0번방 1번방 연결을 메모리의 바로 다음 칸에 한다
- LinkedList는 각 방마다 메모리가 연관성이 없이 연결되어있다.
'Programing > Java' 카테고리의 다른 글
| [JAVA] HashSet이란??? (0) | 2025.03.28 |
|---|---|
| [JAVA] 스코프와 형변환 (0) | 2025.03.28 |
| [JAVA] 조건문 (0) | 2025.03.28 |
| [JAVA] 연산자 (0) | 2025.03.28 |
| [JAVA] 변수 (0) | 2025.03.28 |