본문 바로가기

개발/Java

[Java] 자바 - 논리부정연산자 / 비교연산자 / 논리연산자 / 삼항연산자

< 논리부정연산자 >

 

- 논리값(true, false)을 반대로 바꿔주는 연산자

 

[ 표현법 ] !논리값;

!true == false

!false == true

 

- !!true = 부정의 부정은 긍정!

 


< 비교연산자(관계연산자) >

 

- 이항연산자, 두 개의 값을 가지고 비교함

- 비교연산을 한 결과값 : 참일 경우 true, 거짓일 경우 false

- 특정 조건을 제시할 수 있는 ☆조건문★에서 쓰일 예정

- 의문문으로 생각하는게 좋음

- 피연산자는 숫자, 결과값은 논리값

 

[ 종류 ]

 

1. 크고 작음을 비교 (대소비교연산자)

a < b a가 b보다 작은가?
a > b a가 b보다 큰가?
a <= b a가 b보다 작거나 같은가?
a >= b a가 b보다 크거나 같은가?

 

2. 일치함을 비교 (동등비교연산자)

a == b a와 b가 일치하는가?
a != b a와 b가 일치하지 않는가?

 

System.out.println("a < b : " + (a < b)); // true
// 대소비교연산자보다 산술연산자의 우선순위가 높음. 괄호로 우선순위 지정

 


< 논리연산자 >

 

- 두 개의 논리값을 연산하는 연산자

[ 표현법 ]  논리값 논리연산자 논리값 => 결과값도 논리값

 

[ 종류 ]

 

1. AND 연산자 : 논리값 && 논리값  (& : 앰퍼샌드Ampersand)

- 좌항과 우항의 결과값이 모두 true여야만 최종 결과가 true

- 좌항에 false가 나올 확률이 높은 식을 적음(숏컷연산)

- 의미 : ~이면서, ~이고, 그리고

true && true  true
true && false false
false && true false
false && false false
boolean result = (1 <= num) && (num <= 100); // 사이값의 경우 눈에 보이게 작성

 

2. OR 연산자 : 논리값 || 논리값 (| : 파이프Pipe, 버티컬바Vertical bar)

- 좌항 또는 우항의 값 중 하나라도 true이면 최종 결과가 true

- 의미 : ~이거나, 또는

true || true  true
true || false true
false || true true
false || false false

 

int num = 10;	
boolean result = false && (num > 0);
// Deadcode : 뒤의 비교연산 구문이 실행되지 않음
//            실행 오류는 나지 않지만, 결과값은 false이므로 쓸 필요가 없음

 


< 삼항연산자 >

 

- 피연산자가 3개 => 값 3개와 연산자 1개로 이루어짐

- 조건식 형식으로 쓰임

* 조건식 : 결과값에 따라 연산을 처리하는 방식.

                 결과값이 참일 경우 식1을 처리하고, 결과값이 거짓일 경우 식2를 처리

 

[ 표현법 ]

조건식  ?  조건이 true일 경우 결과값 : 조건이 false일 경우 결과값

 

	// 영문자 하나를 입력받아서 대문자인지 아닌지 판별
	public void method() { 
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println("영문자를 하나만 입력하세요 : ");
		char ch = sc.nextLine().charAt(0);
		// charAt(index) : 문자열에서 index에 해당하는 단일문자 추출
		
		String result = ('A' <= ch) && (ch <= 'Z') ? "대문자" : "대문자 아님";
		               // 'a' <= ch && ch <= 'z' ? "대문자가 아닙니다" : "대문자"; 
		               // ASCII코드표를 보지 않아도 자동형변환
		
		System.out.println(ch + "은(는) " + result);

	}