제어문(Control Statement)는 타 언어도 존재하는 기능으로 말 그대로 제어하는 코드를 말한다.
그렇다면 무엇을 제어하는가 하면, 바로 '컴퓨터 프로그램'을 우리가 제어할 때 사용하는 기능인 것이다.
제어문에는 크게 아래와 같이 나누어 볼 수 있다.
-- 조건문 : If문, Switch문
-- 반복문 : for문(구간반복), while(조건반복), do while(실행반복)
-- 기타 : continue문, break
이제부터 하나하나의 기능에 대해서 음미해보도록 하자.
<If문>
if문의 기본 형식 1)
조건식은 비교식 또는 논리식이어야 한다. 산술식은 값이 다양하게 존재하므로 사용할 수가 없다.
즉, 조건의 결과값이 true 또는 false여야 한다는 것이다.
if문의 구조는 다음과 같다.
▲ 위의 코드를 말로 풀어내자면 '만약 조건식의 값이 true이면 중괄호안의 코드를 실행한다'
반대로 말하자면 조건식의 값이 true가 아니면(=false이면) 중괄호안의 코드를 실행하지 않는다. 가 된다.
예제를 직접보면서 알아보자
1) 조건식의 결과값이 boolean값이 아닌 식은 조건식으로 불가
▲ 두 if문 안의 조건식이 true나 false가 아니기 때문에 error가 난다.
2) 조건식은 비교식 아니면 논리식 또는 boolean값
▲ 역시 1)과 결을 같이 하는 내용이다. 조건식 안에는 비교식 or 논리식 or 직접 boolean값 입력의 방법을 통해서 결과값이 true 또는 false가 나와야한다!
▲ 직접 조건식에 boolean값을 입력할 수도 있다.
3) 주의할 사항들
▲ if조건식 뒤에 세미콜론(;)을 찍으면 browser는 문장이 끝났다고 생각하기때문에 조건식이 true라도 실행할 명령문이 없게 된다. 때문에 아래의 중괄호안의 내용은 if문과 전~혀 상관없는 단순출력코드가 되어버리게 된다.
▲ if문에서 수행할 명령문이 하나일 때는 중괄호를 생략해도 된다. 하지만 명령문이 2개 이상인데 중괄호를 생략한다면 예상치 못한 결과값이 출력될 수도 있다.
명령문이 두개인 상태에서 중괄호를 없애면 첫번째 명령문만이 if문의 명령문으로 인식이 되고 나머지 명령문은 그냥 단순출력문으로 인식이 되어버릴 것이다.
<If ~ else문>
if~ else문을 사용할 때는 항상! if와 else는 붙어다녀야 한다. else는 절~대로 혼자서 쓰일 수 없다는 것을 꼭 명심하자 둘은 한 몸이다!
if ~ else문의 구조는 다음과 같다.
▲ if~ else문을 말로 풀이해보면 "만약 if의 조건이 true라면 중괄호의 코드를 실행하고 if문을 종료해라, 하지만 if의 조건이 false라면 else의 코드를 실행하라" 라고 할 수 있다.
단순 if문을 if~else문을 이용해서 바꿔보자.
▲ if문으로만 구성
▲ if~else문으로 구성
if문으로만 내용을 구성할 수 있지만 왜 우리는 if~else문을 쓸까?
=> else문으로 작성하게 되면 if문으로만 작성하게 될 때보다 코드가 짧아지고 조건식 실행횟수가 줄어들기 때문에 훨씬 가벼운 코드가 되기 때문이다.
<else if>
else if의 구조는 다음과 같다.
▲ 첫 줄(5행)의 if는 8행의 else와 한 몸을 이뤄서 if~else가 된다. 8행의 if는 11행의 else와 한 몸이 되고.... 같은 방식으로 if~else문이 있다고 생각하면 된다.
이를 또 말로 풀어보면 " 만약 조건식1의 값이 참이면 명령문 1을 실행시키고, 조건식1의 값이 거짓이면 조건식2번의 값을 확인봐라, 만약 조건식2번이 참이면 명령문2를 실행시키고, 조건식2가 거짓이라면 조건식3의 값을 확인해보고~~~" 와 같이 말할 수 있을 것이다.
예제를 하나보면서 사용범을 느껴보자.
▲ else~ if문을 사용하여 구간별 학점을 나눌 수도 있다.
'Java' 카테고리의 다른 글
[Java]변수의 자료형 (part.3 char형과 boolean) (0) | 2022.02.26 |
---|---|
[Java]제어문(Control Statement) - switch문 (0) | 2022.02.25 |
[Java]연산자들 (0) | 2022.02.24 |
[Java]Format String (0) | 2022.02.24 |
[Java]Escape문자 (0) | 2022.02.24 |