[Java] 논리연산자, 삼항연산자

Date:     Updated:

카테고리:

태그:

java.png

논리연산자

논리값 (true or false) 를 취급하는 연산자이다.

논리연산자의 종류

  1. 논리 연결 연산자 : 두 개의 피연산자를 가지는 이향 연산자이며, 연산자의 결함 방향은 왼쪽에서 오른쪽이다.
    • 두 개의 논리 식을 판단하여 참과 거짓을 판단한다.
    • 1-1 &&(논리AND) 연산자 : 두 개의 논리식이 모두 참일 경우 반환 둘 중에 하나라고 거짓인 경우 거짓을 반환하는 연산자이다
    • 1-2   (논리OR) 연산자 : 두 개의 논리식 중 둘 중 하나라도 참인 경우 참을 반환 둘다 거짓일 경우 거짓을 반환하는 연산자이다
  2. 논리 부정 연산자 : 피연산ㅁ자가 하나인 단항연산자로, 피 연산자의 결합 방향은 왼쪽에서 오른쪽이다
    • 2-1 !(논리NOT)연산자 : 논리의 결과가 참이면 거짓을, 거짓이면 참을 반환한다
System.out.println("true와 true의 논리 and 연산 : " + (true && true));
System.out.println("true와 false의 논리 and 연산 : " + (true && false));
System.out.println("false와 true의 논리 and 연산 : " + (false && true));
System.out.println("false와 false의 논리 and 연산 : " + (false && false));

System.out.println("true와 true의 논리 or 연산 : " + (true || true));
System.out.println("true와 false의 논리 or 연산 : " + (true || false));
System.out.println("false와 true의 논리 or 연산 : " + (false || true));
System.out.println("false와 false의 논리 or 연산 : " + (false || false));

int a = 10;
int b = 20;
int c = 30;
int d = 40;

System.out.println("a가 b보다 작으면서 c가 d보다 작은지 확인 : " + (a < b && c < d));
System.out.println("a가 b보다 작으면서 c가 d보다 큰지 확인 : " + (a < b && c > d));
System.out.println("a가 b보다 크면서 c가 d보다 작은지 확인 : " + (a > b && c < d));
System.out.println("a가 b보다 크면서 c가 d보다 큰지 확인 : " + (a > b && c > d));

System.out.println("a가 b보다 작거나 c가 d보다 작은지 확인 : " + (a < b || c < d));
System.out.println("a가 b보다 작거나 c가 d보다 큰지 확인 : " + (a < b || c > d));
System.out.println("a가 b보다 크거나 c가 d보다 작은지 확인 : " + (a > b || c < d));
System.out.println("a가 b보다 크거나 c가 d보다 큰지 확인 : " + (a > b || c > d));
  • 출력값
true와 true의 논리 and 연산 : true
true와 false의 논리 and 연산 : false
false와 true의 논리 and 연산 : false
false와 false의 논리 and 연산 : false
true와 true의 논리 or 연산 : true
true와 false의 논리 or 연산 : true
false와 true의 논리 or 연산 : true
false와 false의 논리 or 연산 : false
a가 b보다 작으면서 c가 d보다 작은지 확인 : true
a가 b보다 작으면서 c가 d보다 큰지 확인 : false
a가 b보다 크면서 c가 d보다 작은지 확인 : false
a가 b보다 크면서 c가 d보다 큰지 확인 : false
a가 b보다 작거나 c가 d보다 작은지 확인 : true
a가 b보다 작거나 c가 d보다 큰지 확인 : true
a가 b보다 크거나 c가 d보다 작은지 확인 : true
a가 b보다 크거나 c가 d보다 큰지 확인 : false

논리 연산자의 우선순위와 활용

  • 논리 ans 연산자와 논리 or 연산자의 우선순위
  • && : 11순위
  •   : 12순위
  • 논리 and 연산자 우선순위가 논리 on 우선순위보다 높다

1부터 100 사이의 값인지 확인

  • 1 <= 변수 <= 100 이렇게는 사용 못함 –> 변수 >= 1 && 변수 <== 100 이렇게 사용해야 한다
int num1 = 55;
System.out.println("1 부터 100 사이인지 확인 : " + (num1 >=1 && num1 <= 100));

int num2 = 166;
System.out.println("1부터 100 사이인지 확인 : " + (num2 >= 1 && num2 <= 100));
  • 출력값
1 부터 100 사이인지 확인 : true
1 부터 100 사이인지 확인 : false

영어의 대문자인지 확인

  • 영어 대문자냐? –> 문자변수 >= ‘A’ && 문자변수 <= ‘Z’ >=
char ch = 'G';
System.out.println("영어의 대문자인지 확인 : " + (ch >= 'A' && ch <= 'Z'));

char ch1 = 'g';
System.out.println("영어의 대문자인지 확인 : " + (ch1 >= 'A' && ch1 <= 'Z'));
  • 출력값
영어의 대문자인지 확인 : true
영어의 대문자인지 확인 : false

대소문자와 상관없이 영문자 y인지 확인

  • 문자변수 == ‘y’   문자변수 == ‘y’
char ch2 = 'y';
System.out.println("영문자 y인지 확인 : " + (ch2 == 'y' || ch2 == 'Y'));

char ch3 = 'Y';
System.out.println("영문자 y인지 확인 : " + (ch3 == 'y' || ch3 == 'Y'));
  • 출력값
영문자 y인지 확인 : true
영문자 y인지 확인 : true

영문자인지 확인

  • A : 65, Z : 90, a : 97, z : 122 (중간의 91~96까지는 영문자가 아님)
char ch5 = 'F';
char ch5 = 'F';
System.out.println("영문자인지 확인 : " + ((ch5 >= 'A' && ch5 <= 'Z')||(ch5 >= 'a' && ch5 <= 'z')));
System.out.println("영문자인지 확인 : " + ((ch5 >= 65 && ch5 <= 90)||(ch5 >= 97 && ch5 <= 122)));
  • 출력값
영문자인지 확인 : true
영문자인지 확인 : true

AND 연산과 OR 연산의 특징

  • 논리식 && 논리식 : 앞의 결과가 false 이면 뒤도 false 이기 때문에 실행하지 않는다
  • 논리식   논리식 : 앞에 결과가 ture 이면 뒬를 실행 안함

논리식 && 논리식 : 앞에 결과가 false 이면 뒤를 실행 안함

  • 조건식 두개가 모두 만족되어야 true 를 반환하지만 앞에 미리 false 가 나오게 되면 뒤에 조건을 확인할 필요없이 false 를 반환한다
  • 따라서 연산 횟수를 줄이기 위해서는 && 연산의 경우 앞에 false 가 나올 가능성이 높은 조건을 작성하는 것이 좋다
int num1 = 10;

int result = (false && ++num1 > 0 )? num1 : num1;

System.out.println("&&실행 확인 : " + result);
  • 출력값
&&실행 확인 : 10

논리식 || 논리식 | 앞에 결과가 true 이면 뒤를 실행 안함

  • 조건식 중 둘 중 하나라도 true 를 반환하면 true를 반환하기 때문에 앞에서 미리 true 가 나오게 되면 뒤의 조건을 확인할 필요없이 true 를 반환한다
  • 따라서 연산의 횟수를 줄이기 위해서는   연산의 경우 true 가 나올 가능성이 높은 조건을 작성하는 것이 좋다
int num2 = 10;

int result2 = (true || ++num2 >0 )? num1 : num2;

System.out.println("||실행 확인 : " + result2);
  • 출력값
||실행 확인 : 10

삼항연산자

자바에서 유일하게 피연사자 항목이 3개인 연산자이다
항목이 3개 > (조건식)? 참 일때 사용할 값1 : 거짓일 때 사용할 값2
조건식은 반드시 결과가 true 혹은 false 가 나오게끔 작성해야 한다
비교 / 논리연산자 주로 사용됨

삼항연산자 단독 사용

int num1 = 10;
int num2 = -10;
String result = (num1 > 0)? "양수입니다" : "양수가 아닙니다.";

System.out.println("num1은 " + result);

String result2 = (num2 >0)? "양수입니다" : "양수가 아닙니다.";

System.out.println("num2은 " + result2);
  • 출력값
num1은 양수입니다
num2은 양수가 아닙니다.

삼항연산자의 중첩사용

int num3 = 5;
int num4 = 0;
int num5 = -5;

String result3 = (num3 > 0)? "양수다" : (num3==0)? "0이다" : "음수이다";
String result4 = (num4 > 0)? "양수다" : (num4==0)? "0이다" : "음수이다";
String result5 = (num5 > 0)? "양수다" : (num5==0)? "0이다" : "음수이다";

System.out.println("num3은 " + result3);
System.out.println("num4은 " + result4);
System.out.println("num5은 " + result5);
  • 출력값
num3은 양수다
num4은 0이다
num5은 음수이다

요약.
논리연산자 : 논리적인 조건을 평가하여 참 또는 거짓을 반환
삼항연산자 : 세 개의 피연산자를 가지며 조건에 따라 두 개 중 하나의 결과를 반환

자, 왠지 삼항연산자에 들어서면서 재미가 있어지면서 앞으로 어떤 난관이 생길것만 같은 느낌?? 문과머리의 촉

Java 카테고리 내 다른 글 보러가기

댓글 남기기