Chapter 04 조건문과 반복문
프로그램의 흐름(flow)을 바꾸는 역할을 하는 문장들을 '제어문(control statement)'이라고 한다. 제어문에는 '조건문과 반복문'이 있는데, 조건문은 조건에 따라 다른 문장이 수행되도록 하고, 반복문은 특정 문장들을 반복해서 수행한다.
1. 조건문 - if, switch
조건문은 조건식과 문장을 포함하는 블럭{}으로 구성되어 있으며, 조건식의 연산결과에 따라 실행할 문장이 달라져서 프로그램의 실행흐름을 변경할 수 있다.
조건문은 if
문과 switch
문, 두 가지가 있으며 주로 if
문이 많이 사용된다. 처리할 경우의 수가 많을 때는 if
문보다 switch
문이 더 효율적이지만 switch
문은 if
문보다 제약이 많다.
if
문은 가장 기본적인 조거문이며, 다음과 같이 '조건식'과 '괄호{}'로 이루어져 있다. 'if'의 뜻이 '만일 ~이라면...'이므로 '만일(if) 참(true)이라면 괄호{} 안의 문장들을 수행하라.'라는 의미로 이해하면 된다.
if (조건식) {
// 조건식이 참(true)일 때 수행될 문장들을 적는다.
}
if (score > 60) {
System.out.println("합격입니다.");
}
조건식 score > 60
이 참(true)이면 괄호{} 안의 문장이 수행되어 화면에 "합격입니다."라고 출력되고 거짓(false)이면, if
문 다음의 문장으로 넘어간다.
변수 score
의 값이 80이라면
score > 60 ➡️ 80 > 60 ➡️ true 조건식이 참(true)이므로 괄호{} 안의 문장이 실행된다.
위 조건식의 결과는 true
이므로 if
문 괄호{} 안의 문장이 실행된다. 만일 조건식의 결과가 false
이면, 괄호{} 안의 문장은 수행되지 않을 것이다.
if
문에 사용되는 조건식은 일반적으로 비교연산자와 논리연산자로 구성된다.
조건식을 작성할 때 실수하기 쉬운 것이, 등가비교 연산자 ==
대신 대입 연산자 =
를 사용하는 것이다. 자바에서 조건식의 결과는 반드시 true
또는 false
이어야 한다는 것을 잊지 말자.
괄호{}를 이용해서 여러 문장을 하나의 단위로 묶을 수 있는데, 이것을 '블럭(block)'이라고 한다. 블런은 '{'로 시작해서 '}'로 끝나는데, '}'다음에 문장의 긑을 의미하는 ';'을 붙이지 않는다는 것에 주의하자.
블럭 내의 문장들은 탭(tab)으로 들여쓰기(indentation)를 해서 블럭 안에 속한 문장이라는 것을 알기 쉽게 해주는 것이 좋다. 탭(tab)은 키보드의 맨 왼쪽에 있다.
블럭의 시작을 의미하는 '{'의 위치는 아래와 같이 두 가지 스타일이 잇는데, 각 스타일마다 장단점이 있으므로 본인의 취향에 맞는 것으로 선택해서 사용하면 된다. 왼쪽의 스타일은 라인의 수가 짧아진다는 장점이, 오른쪽의 스타일은 블럭의 사작과 끝을 찾기 쉽다는 장점이 있다.
블럭 안에는 보통 여러 문장을 넣지만, 한 문장만 넣거나 아무런 문장도 넣지 않을 수 잇다. 만일 블럭 내의 문장이 하나뿐 일 때는 아래와 같이 괄호{}를 생략할 수 있다.
if (score > 60)
System.out.println("합격입니다.");
또는 아래와 같이 한 줄로 쓸 수도 있다.
if (score > 60) System.out.println("합격입니다.");
이처럼 블럭 내의 문장이 하나뿐인 경우 괄호{}를 생략할 수 있지만 가능하면 생략하지 않고 사용하는 것이 바람직하다. 나중에 새로운 문장들이 추가되면 괄호{}로 문장들을 감싸 주어야 하는데, 이 때 괄호{}를 추가하는 것을 잊기 쉽기 때문이다.
if (score > 60)
System.out.println("합격입니다."); // 문장1. if문에 속한 문장
System.out.println("축하드립니다."); // 문장2. if문에 속한 문장이 아님
📑 원본 자료
- Java의 정석(3판) [남궁 성/도우출판/2016]