Java

연산자(관계, 논리, 빠른평가, 삼항)

햄발자 2024. 4. 12. 14:31

 

 

관계(비교)연산자

 

이항 연산자

  •  연산의 결과가 true(참), false(거짓)으로 반환 됨, 비교연산자 라고도 함
  •  조건문, 반복문의 조건식으로 많이 사용 됨

 

★관계 연산자를 주어로 바라보고 하는 말이 사실인지 거짓인지 확인 하자.★

 

 

예시

package basic.ch03;

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;

public class Operation6 {

public static void main(String[] args) {

// 논리 연산자는 3가지 종류가 있다. 
// 논리곱 ---> && (엠퍼센트,엠퍼센트)   
// 논리합 ---> || (버티컬 바, 버티컬 바)
// 부정 --> ! 

int num1 = 10; 
int num2 = 20; 

// 1. 논리곱(&&)
//                   T     &&     T   
// 논리곱은 전부 ture 이면 true 반환 한다. 하나라도 거짓이면 false 을 반환 한다. 
boolean flag1 = (num1 > 0) && (num2 > 0);
System.out.println("flag 1 : " + flag1);

//        F   =       T    &&    F 
boolean flag2 = (num1 > 0) && (num2 < 0);
System.out.println(flag2);

System.out.println("==========================");

// 2. 논리 합 
//       T      =       T     ||     F
// 둘 중에 하나라도 true 이면 연산에 결과는 무조건 true 이다. 
boolean flag3 = (num1 > 0) || (num2 < 0);
System.out.println(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 반대로 변경 해서 출력해보자. 

} // 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

 

 

연산자 우선순위

  • 가장 높은 순위 연산자는 ( ) [ ] .
  • 가장 낮은 순위 연산자 =

 

 

자바 연산자