-
[Java] 3. 선택문CSE/Java 2015. 8. 9. 14:10
3.1 관계 연산자와 논리 연산자
선택문은 조건을 사용하며, 일반적으로 관계 연산자와 논리 연산자를 사용합니다.
3.1.1 관계 연산자
관계 연산자(비교 연산자)는 두 값을 비교하는 연산자로 아래 연산자를 제공합니다.
<와 >을 제외하고는 두 개의 문자(=를 우측)를 조합하여 표기합니다. =>, =<, =! 처럼 =가 먼저 오게 조합하면 잘못된 표기로 주의하자.
관계 연산자
예 문
내 용
<
x < y
x의 값이 y보다 작으면 참, 아니면 거짓
>
x > y
x의 값이 y보다 크면 참, 아니면 거짓
<=
x <= y
x의 값이 y보다 작거나 같으면 참, 아니면 거짓
>=
x >= y
x의 값이 y보다 크거나 같으면 참, 아니면 거짓
==
x == y
x의 값이 y와 같으면 참, 아니면 거짓
!=
x != y
x의 값이 y와 다르다면 참, 아니면 거짓
관계 연산자는 우선순위가 사칙 연산자 보다 낮습니다.
연산을 할 때는 양 쪽의 피연산자 자료형이 같아야 합니다. 자료형이 다르면 캐스트 연산자를 사용하여 양 쪽의 자료형을 일치시켜준 뒤 연산을 해야합니다.
자바의 관계 연산식의 결과가 boolean 형을 리턴합니다. 연산 결과는 조건이 성립하면 참(true)이 되고 조건식이 불일치하면 거짓(false)이 됩니다.
3.1.2 논리 연산자
논리 연산자는 true와 false를 구분하는 연산자 입니다. 관계 연산자는 두 개의 피연산자 크기를 비교하기 위한 연산자이므로 범위가 넓으면 비교할 수 없습니다. 이를 해결하기 위해 아래 표와 같은 논리 연산자를 제공합니다.
논리 연산자
예 문
내 용
!
!x
NOT 연산자(x를 부정)
연산 결과는 x가 참이면 거짓, 거짓이면 참
&&
x && y
x와 y의 논리곱(AND)
연산 결과는 모두 참일 때만 참이고, 그 이외는 거짓
||
x || y
x와 y의 논리합(OR)
연산 결과는 모두 거짓일 때만 거짓이고, 그 이외는 참
[예제 1] 논리 연산자 코드3.2 선택문자바는 순차적으로 위에서 아래로 차례대로 실행합니다. 실행 순서는 조건에 의해 변경할 수 있습니다. 실행 순서를 변경하기 위해 제어문(Control Statement)을 사용합니다.제어문은 다음과 같이 구분합니다.1) 선택문: if 문, if ~ else 문, switch 문2) 반복문: while 문, do ~ while 문, for 문3) 점프문: goto 문, continue 문, break 문특정한 기준(조건)에 해당할 때 지정한 문장을 실행할 것인지 안할 것인지 결정할 때 선택문(조건문)을 사용합니다.3.2.1 if 문if 문은 "만약 ~ 이라면(if)을 하고 그렇지 않으면(else) ~를 한다" 라는 논리 구조로 만약 ~ 부분의 조건을 조건식으로 표기합니다.
if(조건식) {
// 조건식이 맞으면(연산결과가 true) 수행할 문장(true branch)
}
조건식은 일반적으로 대소 비교하는 관계 연산자이거나 논리 연산자를 결합한 논리식이 사용됩니다.
조건식 결과는 boolean 타입을 갖습니다. boolean 타입은 true와 false 입니다.
[예제 2] 입력 정수에 대한 양수 판별하기
3.2.2 if 문에 의한 두 개 이상의 문장 수행if 문에서 조건식이 참일 때 한 개 이상의 문장을 실행할 수 있습니다. 두 개 이상의 문장을 실행하려면 그 문장들을 { } 로 묶습니다.중괄호 안에 포함한 모든 문장들은 하나의 작업 블록으로 묶이므로 모두 실행됩니다.
if (조건식) {
문장;
}
[예제 3] 입력한 문자 'A'의 ASCII 코드 보다 크면 2개 이상의 문장을 출력하는 코드이다.3.2.3 if ~ else 문if 문은 else와 함께 사용하여 하나의 세트 문장으로 인식합니다. else는 false 선택일 때 처리하기 위해서 사용합니다.
if (조건식) {
// 조건식이 맞으면 수행할 문장(true branch)
} else {
// 조건식이 안 맞으면 수행할 문장(false branch)
}
조건식을 검사하여 결과가 true 일 경우만 true branch를 실행합니다.
false일 경우에는 false branch를 실행합니다.
아래 그림은 if ~ else 문에 대한 흐름도(flowchart) 입니다
if ~ else 문은 두 개의 문장이 아니라 하나의 세트 문장으로 처리되므로 else 문은 반드시 바로 앞에 오는 if 문 함께 쌍으로 결합되어야 합니다.[예제 4] 정수 입력하여 짝수 홀수 판별하기3.2.4 중첩 if 문else 문 안에 또 다른 if 문을 포함하는 것을 중첩 if 문이라고 합니다. 여러 조건에 의해 선택하는 경우에 중첩합니다.if 문은 또 다른 if 문이나 if ~ else 문을 포함한 어떤 문장도 얼마든지 중첩할 수 있습니다.
if (조건식1)
문장;
else if (조건식2)
문장;
else
문장;
[예제 5] 키보드에서 성적 입력하여 학점 부여하기
3.2.5 switch 문
조건문의 경우의 수가 많은 경우에는 if 문 대신 switch 문을 사용하면 간결하고 가독성이 높습니다. switch 문은 다중 선택문 입니다.
switch (식) {
case 정수1: // 식의 결과 값이 정수1이면 실행할 문장1;
[break;]
case 정수2: // 식의 결과 값이 정수2이면 실행할 문장2;
[break;]
case 정수n: // 식의 결과 값이 정수n이면 실행할 문장n;
[break;]
default: // 옵션, 식의 결과 값과 일치하는 case 문이 없을 때 실행할 문장
}
[예제 6] 키보드에서 입력한 달에 해당하는 최대 일수 출력하기
'CSE > Java' 카테고리의 다른 글
[Java] NIO 기반 입출력 및 네트워킹 - 파일 채널 (0) 2015.09.03 [Java] NIO 기반 입출력 및 네트워킹 - 버퍼(Buffer) (2) 2015.09.01 [Java] NIO 기반 입출력 및 네트워킹 - NIO, 파일 & 디렉토리 (2) 2015.08.31 [Java] 2-1. 자료형과 연산자 (0) 2015.08.06 [Java] 2. 자료형과 연산자 (0) 2015.08.05 [Java] 1. Java 기본 구조 (1) 2015.07.24