Java

[Java] 비교 연산자, 논리 연산자

gorusair 2021. 12. 13. 12:30

비교 연산자는 두 피연산자를 비교하는 데 사용되는 연산자다. 주로 조건문과 반복문의 조건식에서 사용되며, 연산결과는 오직 true와 false 둘 중의 하나이다.

 

대소 비교 연산자 <  > <= >=

두 피연산의 값의 크기를 비교하는 연산자이다. 참이면  true를 , 거짓이면 false를 결과로 반환한다. 기본형 중에서는 
boolean형을 제외한 나머지 자료형에 다 사용할 수 있지만 참조형에는 사용할 수 없다

 

비교연산자 연산결과
> 좌변 값이 크면, true 아니면 false
< 좌변 값이 작으면, true 아니면 false
>= 좌변 값이 크거나 작으면, true 아니면 false
<= 좌변 값이 작거나 같으면, true 아니면 false

등가비교 연산자 == ! =

두 피연산자의 값이 같은지 또는 다른지를 비교하는 연산자이다. 대소비교 연산자(<,>,<=,>=)와는 달리, 기뵨형은 물론

참조형, 즉 모든 자료형에 사용할 수있다.

 

비교연산자 연산결과
== 두 값이 같으면, true 아니면 false
!= 두 값이 다르면, true 아니면 false
class OperatorEx21 {
	public static void main(String[] args){
    	System.out.printf("10 == 10.0f \t %b%n", 10==10.0f);
        System.out.printf("'0' == 0	\t %b%n", '0' == 0);
        System.out.printf("'A'==65, \t %b%n", 'A' =65);
        System.out.printf("'A' <'B' \t %b%n", 'A' >'B');
        System.out.printf("'A'+1 != 'B' \t %b%n", 'A'+1 ! = 'B');
        	}
        }
        
        실행결과
10 ==10.0f 	 true
'0'==0     	false
'A' ==65   	 true
'A' >'B'     true
'A' >'B'    false
public class OperatorEx22 {
	public static void main(String[] args) {
		float f = 0.1f;
		double d = 0.1;
		double d2 = (double)f;
		
		System.out.printf("10.0 == 10.0f, %b%n", 10.0==10.0f);
		System.out.printf("0.1 == 0.1f     %b%n", 0.1 == 0.1f);
		System.out.printf("f = %19.17f%n", f);
		System.out.printf("d = %19.17f%n",d);
		System.out.printf("d2 = %19.17f%n",d2);
		System.out.printf("d==f, %b%n", d==f);
		System.out.printf("d2==f, %b%n", d2==f);
		System.out.printf("(float)d==f, %b%n", (float)d==f);
		
	}
}

실행결과
10.0 == 10.0f, true
0.1 == 0.1f     false
f = 0.10000000149011612
d = 0.10000000000000000
d2 = 0.10000000149011612
d==f, false
d2==f, true
(float)d==f, true

문자열의 비교

두 문자열을 비교할 떄는, 비교 연산자 '=='대신 equals()라는 메서드를 사용해야 한다.

equals()는 비교하는 두 문자열이 같으면 true, 다르면 false를 반환한다.

 

public class OperatorEx23 {
	public static void main(String[] args) {
		String str1 = "abc";
		String str2 = new String("abc");
		
		System.out.printf("\"abc\"==\"abc\" ? %b%n", "abc"=="abc");
		System.out.printf("str1==\"abc\"? %b%n", str1="abc");
		System.out.printf("str2==\"abc\"? %b%n", str2="abc");
		System.out.printf("str1.equals(\"abc\") ? %b%n", str1.equals("abc"));
		System.out.printf("str2.equals(\"abc\") ? %b%n", str2.equals("abc"));
		System.out.printf("str2.equals(\"ABC\") ? %b%n", str2.equals("ABC"));
		System.out.printf("str2.equalsIgnoreCase(\"ABC\") ? %b%n", 
                                               str2.equalsIgnoreCase("ABC"));
	
	}

}

실행결과
"abc"=="abc" ? true
str1=="abc"? true
str2=="abc"? true
str1.equals("abc") ? true
str2.equals("abc") ? true
str2.equals("ABC") ? false
str2.equalsIgnoreCase("ABC") ? true