< 1. for each문 >
for (type var: iterate) {
body-of-loop
}
- iterate : 루프를 돌릴 객체
- iterate 객체에서 한개씩 순차적으로 var에 대입되어 for문이 수행된다. iterate로 사용할 수 있는 자료형은 루프를 돌릴 수 있는 자료형(배열 및 ArrayList 등)만 가능하다.
- for each문은 따로 반복회수를 명시적으로 주는 것이 불가능하다.
- 1스탭씩 순차적으로 반복할 때만 사용가능하다는 제약이 있다.
for문으로 배열의 값 순차적으로 출력하기
String[] numbers = {"one", "two", "three"};
for(int i=0; i<numbers.length; i++) {
System.out.println(numbers[i]);
}
for each문으로 배열의 값 순차적으로 출력하기
String[] numbers = {"one", "two", "three"};
for(String number: numbers) {
System.out.println(number);
}
< 2. switch-case문 >
- if문과 비슷하지만 좀 더 정형화된 조건 판단문이다.
- 입력값이 정형화되어 있는 경우 if문 보다는 switch/case문을 쓰는 것이 가독성에서 좀 더 유리하다.
기존 switch문
- 분기하기 위해 case 문장에 고정된 값을 지정하고 여기에 맞는 코드를 작성한다.
- break 문장의 위험성과 중복된 case 조건의 복잡성을 보여준다.
- 하나의 case에는 오직 하나의 조건만이 들어가기 때문에 여러 조건에 걸쳐 처리를 하기 위해서는 break 문장을 이용해서 코드를 작성해야 한다.
switch(currentOperator){
case "":
accumulator = currentNumber;
break;
case "+":
accumulator += currentNumber;
break;
case "-":
accumulator -= currentNumber;
break;
case "*":
accumulator *= currentNumber;
break;
case "/":
accumulator /= currentNumber;
break;
}
최신 Modern Java switch문
- 여러 개의 조건에 따라 값을 처리하고 결과를 리턴할 수 있도록 개선되었다.
- 새로운 switch 문장은 하나의 case 문장에 여러 개의 조건을 담을 수 있다.
- 여러개의 조건을 ","를 이용해서 기술할 수도 있고 코드의 가독성 역시 매우 좋아진다.
- 주의할 점은 새로운 switch 표현식에는 break를 사용할 수 없으며 사용할 경우 컴파일 에러가 발생한다.
switch (currentOperator) {
case "" -> accumulator = currentNumber;
case "+" -> accumulator += currentNumber;
case "-" -> accumulator -= currentNumber;
case "*" -> accumulator *= currentNumber;
case "/" -> accumulator /= currentNumber;
}