비교 연산자는 두 피 연산자를 비교하는데 사용되는 연산자다.
연산 결과는 boolean타입인 true와 false로 출력된다.
대소 비교 연산자 <, >, <=, >=
boolean과 참조형을 제외한 나머지에 다 사용 가능한 연산자이다.
비교연산자 | 연산결과 |
> | 좌변 값이 크면, true 아니면 false |
< | 좌변 값이 작으면 true 아니면 false |
>= | 좌변값이 크거나 같으면 true 아니면false |
<= | 좌변 값이 작거나 같으면 true 아니면 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("d==d2 %b%n ", d == d2);
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
d==d2 false
d2==f true
(float)d==f true
이항 연산자이므로 연산을 수행하기 전에 형 변환을 통해 두 피연산자의 타입을 같게 맞춘 다음 피연산자를 비교한다.
문자열의 비교
두 문자열을 비교할 때는, 비교 연산자'=='대신 equals()라는 메서드를 사용해야 한다.\비교 연산자는 두 문자열이 완전히 같은 것인지 비교할 뿐이므로, 문자열의 내용이 같은지 비교하기 위해서는 equals()를 사용하는 것이다.
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(" str1==\"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.equalsIgnotreCase(\"abc\") ? %b%n", str2.equalsIgnoreCase("abc"));
}
}
"abc"=="abc" ? true
str1=="abc" ? true
str1=="abc" ? false
str1.equals("abc") ? true
str2.equals("abc") ? true
str2.equalsIgnotreCase("abc") ? true
str2와 'abc'의 내용이 같아도 false를 얻는다. 내용이 같지만 서로 다른 객체라서 그렇다.