[JAVA] 비교(관계)연산자

@욕심쟁이

·

2020. 7. 29. 16:40

반응형

비교(관계)연산자

 - 두 피연산자 간의 대소 관계 비교를 수행하는 연산자
 - 연산수행결과는 true또는 false값으로 나타냄
   1) ==(동등비교연산자): 두피연산자가 같은지 비교
   2) !=(Not Equal) : 두 피연산자가 같지 않은지(다른지)비교
   3) >, >=, <=, < : 두 피연산자의 대소 관계비교

int a = 10, b=4;
System.out.println(a==b); //false
System.out.println(a!=b); //true
System.out.println(a>b); //true
System.out.println(a>=b); //false
System.out.println(a<=b); //false
System.out.println(a<b); //false

 - 대소관계 비교결과를 boolean타입 변수에 저장할 수 있다.

boolean result = a < b;// ab판별결과가 result에 저장됨
System.out.println("result = " + result); //false

 - 산술연산자 등과 결합하여 사용할 수도 있음 => 두연산 결과를 비교연산자로 비교가능

 - 산술연산자가 비교연산자보다 우선순위가 높으므로 별도의 괄호를 표시하지 않아도 산술연산을 먼저 수행함 
 - 만약, 명학하게 산술연산을 먼저 수행하도록 하려면 괄호 표시!

boolean result2 = (a+b) > (a-b); 


주의사항
 - 실수 (특히 double)0.1의 유효자리 문제때문에 발생
 - float 0.1f와 double 0.1비교시 문제 발생!(=부정확)

System.out.println(0.1 == 0.1f);
float f = 0.1f;
double d = 0.1;
System.out.println(f == d);
//float, double 타입비교시 반드시 float타입으로 일치시킨후 비교연산을 수행해야한다!
System.out.println(f==(float)d);
		
boolean a = false, b = true;
System.out.println("a && a = "+ (a && a)); // f
System.out.println("a && b = "+ (a && b)); // f
System.out.println("b && a = "+ (b && a)); // f
System.out.println("b && b = "+ (b && b)); //t

//---------------------------------------------------

System.out.println("a || a = "+ (a || a));  //f
System.out.println("a || b = "+ (a || b));  //t
System.out.println("b || a = "+ (b || a));  //t
System.out.println("b || b = "+ (b || b));  //t

//---------------------------------------------------

System.out.println("a ^ a = "+ (a ^ a));  //f
System.out.println("a ^ b = "+ (a ^ b));  //t
System.out.println("b ^ a = "+ (b ^ a));  //t
System.out.println("b ^ b = "+ (b ^ b));  //f

//---------------------------------------------------

System.out.println("!a = "+ !a);  //t
System.out.println("!b = "+ !b);  //f

//---------------------------------------------------

 - 한가지 비교만 수행하는 경우 비교연산자만 사용가능
   => 비교연산자와 결합하여 사용하는 경우

int num = 5;
boolean result = num > 5;
System.out.println("num이 5보다 큰가? "+result); //false


 - 두가지 이상의 비교를 조합해야하는 경우 논리 연산자와 결합이 필료
   1) AND : 두 비교 연산의 관계를 ~이고, ~이면서, 그리고 로 정의
      => 정수 num이 5보다 크고, 정수 num이 10보다 작거나 같은가?

result = !(num < 5 || num > 10);
System.out.println(result); //true 

      => 정수 num이 5보다 크고, 정수 num이 10보다 작거나 같은가?

boolean result2 =   num > 5 && num <= 10 ;
System.out.println("num이 5보다 크고, 10보다 작거나 같은가? " + result2); //false
		

   2) OR : 두 비교 연산의 관계를 ~이거나, 또는 으로 정의
       => 정수 num 이 5보다 작거나, 또는 num 이 10보다 큰가?

num = 8;
result = num < 5 || num > 10;
System.out.println("num이 5보다 작거나, 또는 num 이 10보다 큰가? " + result); //false
		

- NOT : 논리형 상태를 반대로 반전시킴

result = !(num < 5 || num > 10);
System.out.println(result); //true

 

반응형

'IT > JAVA' 카테고리의 다른 글

[JAVA]메서드(Method)란?  (0) 2020.08.11
[JAVA] 향상된 for문  (0) 2020.08.07
[JAVA] 다차원 배열  (0) 2020.08.07
[JAVA]삼항연산자(조건연산자)  (0) 2020.07.29
[JAVA] 비교(관계)연산자2  (0) 2020.07.29