관계(비교)연산자
● 이항 연산자
● 연산의 결과가 true(참), false(거짓)으로 반환 됨, 비교연산자 라고도 함
● 조건문, 반복문의 조건식으로 많이 사용 됨
관계 연산자를 주어로 바라보고 하는 말이 사실인지 거짓인지 확인하자.
package basic.ch03;
/**
* 관계, 비교 연산자
* 연산의 결과 값이 무조건 true, false 반환 된다.
*/
public class Operation5 {
public static void main(String[] args) {
int num1 = 5;
int num2 = 3;
// 관계 연산자를 주어로 바라보자
boolean value = (num1 > num2);
System.out.println(value);
System.out.println(3 < 5);
System.out.println(3 >= 10);
System.out.println(3 <= 3);
System.out.println(3 == 5);
System.out.println(3 != 2);
System.out.println("-------------");
// 5 < 3
System.out.println(num1 < num2);
System.out.println(num1 >= num2);
System.out.println(num1 <= num2);
System.out.println(num1 == num2);
System.out.println(num1 != num2);
} // end of main
} // end of class
논리 연산자
● 관계 연산자와 혼합하여 많이 사용 됨
● 연산의 결과가 true(참), false(거짓)으로 반환 됨
예시코드
package basic.ch03;
/**
* 논리 연산자
* 관계 연산자와 혼합하여 많이 사용 된다.
* 연산의 결과는 true, false으로 반환된다.
*/
public class Operation6 {
public static void main(String[] args) {
// 논리 연산자는 3가지 종류가 있다.
// 논리곱 ---> && (엠퍼센트, 엠퍼센트)
// 논리합 ---> || (버티컬 바, 버티컬 바)
// 부정 ---> !
int num1 = 10;
int num2 = 20;
// 1. 논리곱 (&&)
// T && T
// 논리곱은 전부 true 이면 true 반환한다. 하나라도 거짓이면 false을 반환한다.
boolean flag1 = (num1 > 0) && (num2 > 0);
System.out.println("flag1 : " + flag1);
// T & F
boolean flag2 = (num1 > 0) && (num2 < 0);
System.out.println("flag2 : " + flag2);
System.out.println("===================");
//2. 논리합 (||)
// T || F
// 둘 중에 하나라도 true 이면 연산의 결과는 무조건 true이다.
boolean flag3 = (num1 > 0) || (num2 < 0);
System.out.println("flag3 : " + flag3);
System.out.println("===================");
//3. 부정
System.out.println("부정 논리 연산자 사용 : " + !flag3);
// 연산의 결과가 어떻게 되지 ---> 확인해봐야지 ---> 로깅한다.
System.out.println("flag3 : " + flag3);
} // end of main
} // end of class
빠른평가 ( short circuit evaluation )
빠른 평가(short-circuit evaluation)는 논리 연산에서 첫 번째 조건이 결과를 결정하는 경우, 두 번째 조건을 평가하지 않는 자바의 특성입니다.
- 논리 곱(&&)은 두 항의 결과가 모두 true일 때만 결과가 true
앞의 항의 결과가 false이면 뒤 항의 결과를 평가하지 않음 - 논리 합(||)은 두 항의 결과가 모두 false일 때만 결과가 false
앞의 항의 결과가 true이면 뒤 항의 결과를 평가하지 않음
예시코드
package basic.ch03;
/**
* 빠른 평가란?
* 논리 연산에 있어 첫 번째 조건이 결과를 결정할 때
* 두 번째 조건을 평가 하지 않는것을 의미
*/
public class Operation7 {
public static void main(String[] args) {
int number = 5;
int index = 0;
// 빠른 평가가 동작하는 식을 만들어보자.
// F
// 15 > 10
boolean result = ((number = number + 10) < 10) && ((index = index + 2) < 10);
System.out.println("현재 number 변수에 값은 : " + number);
System.out.println("현재 index 변수에 값은 : " + index);
System.out.println("=========================");
// number 값 재 설정
number = 5;
// 논리합을 이용한 빠른 평가 식을 만들어 보자.
// F || T
result = ((number += 10) < 10) || ((index += 2) < 10);
// 문제
System.out.println("number : " + number);
System.out.println("index : " + index);
// 도전 문제 number 와 index 반대로 변경해서 출력해보자
result = ((number += 10) < 10) && ((index += 2) < 10);
// 문제
System.out.println("number : " + number);
System.out.println("index : " + index);
} // end of main
} // end of class
삼항 연산자(조건 연산자)
- 삼항 연산자
- 조건식의 결과가 true(참)인 경우와 false(거짓)인 경우에 따라 다른 결과가 수행됨
- if (조건문)을 간단히 표현할 때 사용 할 수 있음
예시코드
package basic.ch03;
// 수입하다, 가지고 오다
import java.util.Scanner;
/**
* 삼항 연산자 (조건 연산자)
* int num = 조건식 ? 결과1 : 결과2
*/
public class Operation8 {
public static void main(String[] args) {
System.out.println("입력 받은 두 수 중에 큰 수를 출력하세요");
// 자바 특징 --> 풍부한 라이브러리를 지원한다.
// JDK --> 표준 라이브러리(자바 개발자들이 만들어준 기능, 도구) 를 사용해 보자.
// 데이터 타입 ( 특징 : )
// 콘솔창에서 사용자가 키보드로 입력한 값을 받아 주는 녀석이다.
Scanner sc = new Scanner(System.in);
int x = sc.nextInt(); // 사용자가 입력한 정수값을 받아주는 녀석이다.
System.out.println("x의 받은 값은 : " + x);
int y = sc.nextInt();
System.out.println("y의 받은 값은 : " + y);
System.out.println("=====================");
// 조건식 ? 결과 1 : 결과2;
int max = x > y ? x : y;
System.out.println("두 수 중에 큰 수는 " + max + "입니다." );
// 자원 닫기
sc.close();
} // end of main
} // end of class
연산자 우선순위
● 가장 높은 순위 연산자는 ( ) [ ] .
● 가장 낮은 순위 연산자 =
종류 | 연산자 | 우선순위 |
증감 연산자 | ++, -- | 1순위 |
산술 연산자 | +, -, *, /, % | 2순위 |
시프트 연산자 | >>, <<, >>> | 3순위 |
비교 연산자 | >, <, >=, <=, ==, != | 4순위 |
비트 연산자 | &, |, ^, ~ | ~만 1순위, 나머지는 5순위 |
논리 연산자 | &, ||, ! | !만 1순위, 나머지는 6순위 |
조건(삼항) 연산자 | ?, : | 7순위 |
대입 연산자 | =, *=, /=, %=, +=, -= | 8순위 |
연산자 연습문제
package basic.exercise;
import java.util.Scanner;
public class OperatorPractice {
// 시작점
public static void main(String[] args) {
// 1. intData와 doubleData을 덧셈 연산 하여 result1 변수에 담고
// 결과값 30.5를 출력 하세요.
int intData = 10;
double doubleData = 20.5;
// result1 변수명으로 사용
double result1 = intData + doubleData;
System.out.println(result1);
// 2. result1 변수를 정수형으로 강제 형 변환 해서 출력하세요
result1 = (int)result1;
System.out.println((int)result1);
// 3. intData 변수에서 -1을 뺀 후 출력하세요
// 단, 단항 연산자 사용
--intData;
System.out.println(intData);
// 4. doubleData 변수에 값을 -20.5로 출력 하세요
// 단, doubleData 값을 변경하지 마세요
System.out.println(-doubleData);
// 5. 변수 intData 와 doubleData, 관계 연산자를 사용해서
// result2 변수에 값을 true 담기도록 식을 만들고 만들고 출력하세요
int num1 = 10;
int num2 = 30;
boolean result2 = num1 < num2;
System.out.println(result2);
// 6. 변수 result3 을 선언하고 num1과 num2 변수가 합이
// 숫자 50보다 큰지 비교 연산자를 사용해서 결과를 담고 출력하세요
boolean result3 = (num1 + num2) < 50;
System.out.println("50보다 작다 " + result3);
// 7. num1과 num2 값 중 큰 수를 삼항 연산자를 사용해서
// max 변수에 값을 담고 출력해주세요
// 조건식 ? 결과1 : 결과 2
int max = (num1 > num2) ? num1 : num2;
System.out.println("큰 수 출력 :" + max);
} // end of main
} // end of class
'Java > JAVA 1 - 기초문법' 카테고리의 다른 글
JAVA - 반복문( for ) (0) | 2024.04.11 |
---|---|
JAVA - 조건문 if(만약... 이라면) (0) | 2024.04.11 |
JAVA - 연산자(복합 대입 연산자) (0) | 2024.04.09 |
JAVA - 연산자(증감, 감소) (0) | 2024.04.09 |
JAVA - impor문장/입력, 연산자(산술) (0) | 2024.04.09 |