- 이번에 사용하는 연산자는 boolean과 관련된 연산자들입니다.
- boolean은 결과값이 true 혹은 false를 담는 자료형입니다.
- 이번 강좌에는 true 혹은 false로 처리가 가능한 관계연산자와 논리연산자를 보도록 하겠습니다.
1. 관계연산자
- 관계연산자는 좌변과 우변을 비교한다고 해서 비교연산자라고도 합니다.
- 좌변과 우변값을 비교해서 맞으면 true를 반환하고 틀리면 false를 반환합니다.
1) 관계연산자 정리
연산자 | 설명 | 예시 |
> | 좌변이 우변보다 크면 true를 반환, 그렇지 않으면 false를 반환 | num > 10 |
>= | 좌변이 우변보다 크거나 같으면 true를 반환, 그렇지 않으면 false를 반환 | num >= 10 |
< | 좌변이 우변보다 작으면 true를 반환, 그렇지 않으면 false를 반환 | num < 10 |
<= | 좌변이 우변보다 작거나 같으면 true를 반환, 그렇지 않으면 false를 반환 | num <= 10 |
== | 좌변과 우변이 같으면 true를 반환, 그렇지 않으면 false를 반환 | num == 10 |
!= | 좌변과 우변이 같지 않으면 true를 반환, 그렇지 않으면 false를 반환 | num != 10 |
- 다른 것은 수학시간에 모두 배운 내용이지만 같다와 같지 않다 기호만 유의해서 보면 됩니다.
- 결과는 모두 true 혹은 false로 처리가 됩니다.
- 그래서 관계연산자 수식을 사용한 것을 변수에 담으려면 boolean으로 선언해야 합니다.
- 이제 예제를 실습해 보겠습니다.
- 패키지(ch10_operator)과 클래스(Ex06_RelationOperator.java)를 추가해 주세요.
- 기초적 작업을 모르는 분은 아래 주소를 클릭하고 보고 오세요.
https://ossam5.tistory.com/613
## 관계연산자 실습1 - Ex06_RelationOperator.java
package ch10_operator;
public class Ex06_RelationOperator {
public static void main(String[] args) {
int num1 = 10, num2 = 5;
System.out.println(num1 + " > " + num2 + " : " + (num1 > num2)); //true
System.out.println(num1 + " >= " + num2 + " : " + (num1 >= num2)); //true
System.out.println(num1 + " < " + num2 + " : " + (num1 < num2)); //false
System.out.println(num1 + " <= " + num2 + " : " + (num1 <= num2)); //false
System.out.println(num1 + " == " + num2 + " : " + (num1 == num2)); //false
System.out.println(num1 + " != " + num2 + " : " + (num1 != num2)); //true
boolean result = num1 > num2;
System.out.println(result); //true
}
}
- num1과 num2에는 정수를 담았습니다.
- 아래 출력에는 두 변수를 비교했을 때 어떤 결과가 나오는지 출력해 보겠습니다.
- 연결연산자인 + 를 통해 변수와 문자열을 연결해서 사용합니다.
- result에는 비교연산을 처리한 수식을 담았습니다. 이때 반드시 boolean타입으로 선언해야 합니다.
## 관계연산자 결과1 - Ex06_RelationOperator.java
- 그럼 각각 연산자에 따른 결과를 확인할 수 있습니다.
- 결과값이 true와 false로만 처리되는 것을 확인할 수 있습니다.
2. 논리연산자
- 논리연산자는 조건(명제)이 참이면 true를 반환하고, 거짓이면 false를 반환합니다.
- 역시 boolean 방식으로 처리되는 연산자입니다.
- 이건 변수에 담기보다는 추후 조건문(if문, switch문)에 개념만 알아두고, 조건문에서 응용예제로 습득하면 됩니다.
1) 논리연산자 정리
연산자 | 설명 | 예시 |
&& (논리곱) |
여러 식이 모두 true이면 true를 반환, 그렇지 않으면 false를 반환 | (5 > 3) && (5 > 2) |
|| (논리합) |
여러 식 중 하나라도 true면 true를 반환, 모두 false면 false를 반환 | (5 > 3) || (5 > 2) |
! (부정) |
식이 true면 false를 반환, false면 true를 반환 | !(5 > 3) |
- 논리곱연산자와 논리합연산자는 예시에는 2개의 식만 작성했지만 연산자를 계속 사용해서 여러 식을 쓸 수 있습니다.
- 그럼 &&와 || 는 왜 논리곱연산자와 논리합연산자로 이름이 주어졌는지 보겠습니다.
- 논리를 곱한다와 논리를 더한다는 개념입니다.
- 논리는 true와 false인데, 컴퓨터는 true(1), false(0)으로 받아들입니다.
- 컴퓨터는 원래 이진법으로 이루어진 계산기이기 때문입니다.
- 사실 0이 아니면 모두 맞다고 보면 됩니다.
## 논리곱 연산자(&&) 개념
조건식1 && 조건식2
//곱하기로 처리
1 x 1 = 1
1 x 0 = 0
0 x 1 = 0
0 x 0 = 0
- true를 1로 보고 false를 0으로 봤을 때 논리를 곱한다고 해서 논리곱 연산자입니다.
- 보면 모두 1이어야 1이 나오죠? 하나라도 0이면 0이 나옵니다.
- 그러니까 모든 조건이 맞아야 true가 반환되는 겁니다.
- 조건을 생각할 때 모두, 그리고, 사이값개념이면 보통 논리곱 연산자를 사용하면 됩니다.
- 엑셀점수와 액세스 점수가 모두 70점 이상이면 합격이다.
- 엑셀점수가 70점 이상이고, 액세스점수가 70점 이상이면 합격이다.
- 1~100 사이는 정수이다.
- 위와 같은 조건이면 보통 논리곱 연산자를 사용합니다.
## 논리합 연산자(||) 개념
조건식1 || 조건식2
//더하기로 처리
1 + 1 = 2
1 + 0 = 1
0 + 1 = 1
0 + 0 = 0
- true를 1로 보고 false를 0으로 봤을 때 논리를 더한다고 해서 논리합 연산자입니다.
- 이번엔 보면 모두 틀려야만 0이 나옵니다.
- 그러니까 하나라도 조건이 맞으면 true가 반환됩니다.
- 조건을 생각할 때, 하나라도, 혹은, ~거나 가 나오면 보통 논리합연산자를 사용하면 됩니다.
- 주민등록번호 -뒤의 첫자리가 1 혹은 3이면 남자입니다.
- 주민등록번호 -뒤의 첫자리가 1이거나 3이면 남자입니다.
- 엑셀과 액세스 중 하나라도 70점 이상이면 합격입니다.
- 위와 같은 조건이면 보통 논리합 연산자를 사용합니다.
- 이제 실습을 해보겠습니다.
## 논리연산자 실습1 - Ex07_LogicalOperator.java
package ch10_operator;
public class Ex07_LogicalOperator {
public static void main(String[] args) {
//1. 논리곱연산자
int excel = 80;
int access = 60;
boolean result1 = (excel >= 70) && (access >= 70); //false
System.out.println("논리곱 결과 : " + result1);
//2. 논리합연산자
int first = 1;
boolean result2 = (first == 1) || (first == 3);
System.out.println("논리합 결과 : " + result2); //true
//3. 부정연산자
boolean result3 = true;
System.out.println("부정연산자 결과 : " + !result3); //false
}
}
- 첫 번째 result1에는 2가지 변수가 모두 70점 이상인지 확인해 봤습니다.
- access가 60점이라 false죠?
- 두 번째 result2에는 first변수가 1 혹은 3인지 확인해 봤습니다.
- first가 1이니까 true겠죠? 사실 주민등록번호 -뒤자리의 첫 글자가 1과 3이 동시에 될 순 없죠?
- 그러니까 한 개만 맞아도 true인 논리합을 줘야 합니다.
- 세 번째 result3 앞에는 부정연산자인 느낌표를 붙였습니다.
- 청개구리 같은 연산자라 결과를 반대로 반환합니다.
## 논리연산자 결과1 - Ex07_LogicalOperator.java
- 위 코드 주석에 맞게 결과가 잘 나오는 것이 확인됩니다.
'컴퓨터언어 > JAVA(자바)' 카테고리의 다른 글
[JAVA강좌] 14강 비트연산자와 연산자우선순위 (0) | 2024.01.11 |
---|---|
[JAVA강좌] 13강 삼항연산자(조건처리연산자) (0) | 2024.01.10 |
[JAVA강좌] 11강 복합대입연산자와 증감연산자 (0) | 2024.01.10 |
[JAVA강좌] 10강 연산자 개념과 산술연산자 (0) | 2024.01.05 |
[JAVA강좌] 9강 자료 형변환 (0) | 2024.01.04 |