본문 바로가기

컴퓨터언어/JAVA(자바)

[JAVA강좌] 12강 관계연산자와 논리연산자

728x90
반응형

 

 

 

 

 

- 이번에 사용하는 연산자는 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

 

[JAVA강좌] 1강 JAVA변수와 자료형

1. 프로젝트 패키지 생성 및 자바 파일 생성 - 앞으로의 강좌에서는 패키지 생성 및 자바 파일 생성하는 것을 보여드리진 않겠습니다. - 지금 잘 확인해 주시기 바랍니다. 1) 프로젝트 패키지 생성

ossam5.tistory.com

 

 

 

## 관계연산자 실습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로만 처리되는 것을 확인할 수 있습니다. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형

 

 

 

 

 

 

 

 

 

 

 

 

 

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

- 위 코드 주석에 맞게 결과가 잘 나오는 것이 확인됩니다. 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형