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