🌎 Web/Java
[Java] 논리 연산자
오늘 ONEUL
2022. 3. 16. 13:36
조건문 파트에서 다뤘던 논리 연산자에 대해 자세히 알아보자.
논리 연산자
public class LogicalOperatorApp {
public static void main(String[] args) {
// 논리 연산자
// AND 연산자
System.out.println(true && true); // true
System.out.println(true && false); // false
System.out.println(false && true); // false
System.out.println(false && false); // false
// OR 연산자
System.out.println(true || true); // true
System.out.println(true || false); // true
System.out.println(false || true); // true
System.out.println(false || false); // false
// NOT 연산자
System.out.println(!true); // false
System.out.println(!false); // true
}
}
논리 연산자 | 기능 |
&&(AND) | 두 항이 모두 참일 경우 참을 반환 그렇지 않으면 거짓 반환 |
||(OR) | 두 항 중 하나의 항만 참이면 참 반환 두 항이 모두 거짓이면 거짓 반환 |
!(NOT) | 단항 연산자 참일 경우 거짓 반환, 거짓일 경우 참 반환 |
논리 연산자를 이용한 간단한 인증 프로그램
저번에 만든 인증 프로그램의 기능에 논리 연산자를 추가하여 더 세밀하게 만들어보자.
public class AuthApp {
public static void main(String[] args) {
// if문 응용
String id = "oneul";
String inputId = args[0];
String pass = "1234";
String inputPass = args[1];
System.out.println("Hi.");
// 논리 연산자 && 사용
if(inputId.equals(id) && inputPass.equals(pass)) {
System.out.println("Master!");
} else {
System.out.println("Who are you?");
}
}
}
1) 기존에는 패스워드로 쓰는 문자열이 1개였지만, 하나를 더 추가한다.
String pass2 = "4321";
2) 패스워드 둘 중 하나만 충족해도 "Master!"를 출력하도록 ||(OR) 연산자를 사용한다.
// 논리 연산자 && || 사용
if(inputId.equals(id) && (inputPass.equals(pass) || inputPass.equals(pass2))) {
System.out.println("Master!");
} else {
System.out.println("Who are you?");
}
3) 이 조건을 boolean 변수 isRightPass에 할당하여 간결성있게 구현한다.
// 논리 연산자 && || 사용
boolean isRightPass = (inputPass.equals(pass) || inputPass.equals(pass2));
if(inputId.equals(id) && isRightPass) {
System.out.println("Master!");
} else {
System.out.println("Who are you?");
}
4) 아이디와 2개의 패스워드를 인증하는 프로그램 완성!
public class AuthApp2 {
public static void main(String[] args) {
// 조건문 종합
String id = "oneul";
String inputId = args[0];
String pass = "1234";
String pass2 = "4321";
String inputPass = args[1];
System.out.println("Hi.");
// 논리 연산자 && || 사용
boolean isRightPass = (inputPass.equals(pass) || inputPass.equals(pass2));
if(inputId.equals(id) && isRightPass) {
System.out.println("Master!");
} else {
System.out.println("Who are you?");
}
}
}
생각해보기
1) 조건식을 간결하게 만들어서 얻게 되는 이점이 무엇이 있을까요?
간결한 코드는 가독성이 좋고, 유지보수 및 디버깅에 용이하다.
(읽어보면 도움이 될 참고자료)
https://www.itworld.co.kr/news/95751
좋은 소프트웨어 코드의 6가지 공통점
구글만 해도 20억 줄의 코드를 보유하고 있다. 그러나 소스 코드라고 모두 같은 것은 아니다. 소프트웨어 개발자들은 통상 '좋은' 원본(Raw) 코드의 구성 요소에 있어 확실한 선호도를 갖고 있다.
www.itworld.co.kr
※ 이 글은 생활코딩 JAVA - 제어문 강의를 듣고 정리한 내용입니다.