Boolean의 값(true / false)을 결합해서 코드를 좀 더 간결하게 만들 수 있는 논리 연산자(Conditional Operator)
and 연산자의 좌항, 우항이 모두 true일 때 전체가 true가 되는 논리연산자다.
//예제 1)
if ( true && true ) {
Systme.out.println(1);
}
if ( true && flase ) {
Systme.out.println(2);
}
if ( flase && true ) {
Systme.out.println(3);
}
if ( false && false ) {
Systme.out.println(4);
}
출력값
1
if 중첩문을 이용한 login 예제는 다음과 같다.
//예제 2) login 입력
String ID = args[0]; //첫번째 입력값을 문자열 ID에 대입
String password = args[1]; //두번째 입력값을 문자열 pass에 대입
if ( ID.equals("Raye") ) {
if ( password.equals("2479") ) {
System.out.println("right");
} else {
System.out.println("wrong");
}
} else {
System.out.println("wrong");
}
⬇︎ 논리 연산자를 이용해서 예제 2)를 개선해보자.
//예제 3)
String ID = args[0]; //첫번째 입력값을 문자열 ID에 대입
String password = args[1]; //두번째 입력값을 문자열 pass에 대입
if ( ID.equals("Raye") **&&** password.equals("2479") ) {
System.out.println("right");
} else {
System.out.println("wrong");
}
중첩된 if 문을 하나로 줄였다. 덕분에 코드의 복잡성도 낮아졌다. 위의 코드에서 &&는 아래와 같은 의미가 된다.
"ID의 값이 Raye이고 password의 값이 2479이면 참이다"
즉, and 연산자의 좌항, 우항이 모두 참일 때 전체가 참이 되는 것이다.
||(or)는 좌우항 중에 하나라도 true라면 전체가 true가 되는 논리 연산자다.
//예제 4)
if ( true || true ) {
Systme.out.println(1);
}
if ( true || flase ) {
Systme.out.println(2);
}
if ( flase || true ) {
Systme.out.println(3);
}
if ( false || false ) {
Systme.out.println(4);
}
출력값
1
2
3
마지막 조건문의 or는 좌항과 우항이 모두 false이기 때문에 false가 된다.
사용자가 여러 명인 경우 login이 가능하도록 하는 코드를 논리연산자 **or(||)**를 사용해 구현해보면 다음과 같다.
//예제 5)
String ID = args[0];
String password = args[1];
if ( ID.equals("Raye") **||** ID.equals("Raye1") **||** ID.equals("Raye2")
**&&** password.equals("2479") ) {
System.out.println("right");
} else {
System.out.println("wrong");
}
위의 예제에서는 or와 and를 혼합해서 사용하는 방법을 보여준다. id 값을 테스트하는 구간을 괄호()로 묶었다. 사용자가 id의 값으로 egoing 비밀번호를 111111을 입력했다면 연산의 순서는 아래와 같이 된다.