if
문 , switch
문if (조건식) {
//조건식이 참이라면 실행되는 블록
}
if(조건식1) {
//조건식1이 참이라면, 실행되는 블록
}
else if (조건식2) {
//조건식1이 참이 아니면서 조건식2가 참일 때, 실행되는 블록
}
else {
//조건식1과 2가 모두 참이 아닐 때, 실행되는 블록
//else문은 생략 가능
}
switch
문은 if
문처럼 조건식이 true일 경우에 블록 내부의 실행문을 실행하는 것이 아니라, 변수가 어떤 값을 갖느냐에 따라 실행문이 선택된다. switch
문은 변수의 값에 따라서 실행문이 결정되기 때문에 같은 기능의 if
문보다 코드가 간결할 수 있다.package com.company;
import java.util.Scanner;
public class Main {
static Scanner myInput = new Scanner(System.in);
public static void main(String[] args) {
String dice = myInput.nextLine(); //주사위 번호 입력
switch (dice) {
case "1":
System.out.println("1번");
break; //다음 case를 실행하지 않고, switch문 탈출!
case "2":
System.out.println("2번");
break;
case "3":
System.out.println("3번");
break;
case "4":
System.out.println("4번");
break;
case "5":
System.out.println("5번");
break;
case "6":
System.out.println("6번");
break;
default: //switch문의 괄호 안 값과 같은 값이 없으면,
여기서 실행문 실행
System.out.println("없는 숫자! " + dice);
break;
}
}
}
위의 예시 코드에서는 num의 값과 case의 번호가 같으면 해당 case안의 실행문을 실행하고 실행이 완료되면 break를 통해서 switch문을 탈출한다. 주의할 점은, break문을 작성하지 않으면 switch문을 탈출하지 않고 모든 case문을 실행하게 되어 원하는 방식으로 동작하지 않는다는 것이다. (이를 fall through
라고 한다).
switch
문에는 int
뿐만 아니라, char
타입 변수도 사용가능하고, 자바 7부터는 String
타입의 변수도 올 수 있다.
for
문, while
문, do-while
문이 있다. for
문과 while
문은 서로 변환이 가능하기 때문에 반복문을 작성할 때 어느 쪽을 선택해도 좋지만, for
문은 반복횟수를 알고 있을 때 주로 사용하고, while
문은 조건에 따라 반복할 때 주로 사용한다.public class Main {
public static void main(String[] args) {
int sum = 0;
// for (초기화; 조건식; 증감식)
for(int num = 0; num < 10; num++) {
sum += num;
}
System.out.println(sum); // 1~9의 합인 45가 출력된다.
}
}
초기화는 for문이 시작할 때 최초 한 번만 수행되며, 사용할 변수의 초깃값을 정한다.
조건식은 계속 반복할지 여부를 결정하는 조건이다. 조건식 안의 값이 true라면 실행문을 실행시키고, false라면 더 이상 블록을 실행하지 않고 끝난다.
증감식은 반복 횟수를 결정하는 규칙이다. 변수에 값을 더하거나 곱하는 등 수행 방식을 지정합니다. ++ 은 반복문에서 자주 쓰는 증감연산자로, 피연산자의 값을 1 증가시킨다.
초기화식이 필요 없을 경우에는 초기화식을 생략할 수 있고, 초기화식이나 증감식도 둘 이상이 될 수 있다.
public class EnhancedForLoop {
public static void main(String[] args) throws Exception {
String[] names = {"kimcoding", "javalee", "ingikim"};
for(String name : names) {
System.out.println(name + "님은 자바를 공부중 입니다.");
}
}
}
/*
kimcoding님은 자바를 공부중 입니다.
javalee님은 자바를 공부중 입니다.
ingikim님은 자바를 공부중 입니다.
*/
위와 같이 for문의 괄호 ()
안에는 배열에서 꺼낸 항목을 저장할 변수 선언 : 사용할 배열
이 작성된다. 향상된 for
문을 처음 실행 할 때, names 배열에서 가져올 첫번째 값이 존재하는지 확인 하고, 값이 존재하면 해당값을 변수인 name에 저장합니다. 그리고 그 안의 실행문을 실행한다. 블록 내부의 실행문이 모두 실행 되면 다시 names 배열에서 가져올 값이 있는지 확인 하고 만약 가져올 다음 항목이 없다면 자동적으로 for문이 종료된다.
while
문은 조건식이 true일 경우에 계속해서 반복for
문과 while
문은 초기화, 증감식의 위치만 다를 뿐 상호 대체가 가능하다.(초기화);
while(조건식) {
실행문; // 조건식이 참인 동안 실행
증감식;
}
int num = 0, sum = 0;
while(num <= 10) {
sum += num; //sum = sum + num과 똑같은 식
복합 대입 연산자 "+="를 사용한 표현
num++;
}
System.out.println(sum);
do {
(1)실행문 // 처음 한 번은 무조건 실행
} while((2)조건식);
break
문은 반복문인 for문, while문, do-while문을 실행 중지할 때 사용된다. 또한 이전에 학습한 switch문에서도 break문을 사용하여 switch
문을 종료한다.
break문은 대개 if문과 같이 사용되며, if문의 조건식에 따라 for / while문을 종료 할 때 사용한다.
public class Main {
public static void main(String[] args) {
Outer : for (int i = 3; i < 10; i++) {
for (int j = 5; j > 0; j--) {
System.out.println("i " + i + " j "+ j);
if (i == 5) {
break Outer;
}
}
}
}
}
continue
문은 반복문인 for문, while문, do-while문에서만 사용 되는데, 블록 내부에서 continue문이 실행되면 for문의 증감문 혹은 while, do-while문의 조건식으로 이동하여 작동한다. continue
문과 break문의 차이점은 반복문 종료 여부다. continue
문은 반복문을 종료하지 않고 다음 차례로 넘어가 계속 반복을 수행한다. break문과 마찬가지로 continue
문도 보통 if문과 함께 사용하는데, if문의 조건을 만족하는 경우 continue문을 실행하여 그 이후의 코드를 실행하지 않고 다음 반복으로 넘어간다.아래 예제는 1 ~10까지의 수 중에서 홀수만 출력하는 코드다. if문을 사용하여 짝수인 경우는 다시 for문의 증감문으로 이동하여 다음 반복을 실행하고, 홀수만 출력한다.
public class Main {
public static void main(String[] args) throws Exception {
for (int i = 0; i < 10; i++) {
if (i % 2 == 0) { //나머지가 0일 경우는
continue; //다음 반복으로 넘어간다.
}
System.out.println(i); //홀수만 출력
}
}
}
/*
1,3,5,7,9
*/