두 피연산자를 비교하는 데 사용된다. 연산 결과는 true/false
주로 조건문, 반복문의 조건식에 사용된다.
이항 연산자이므로 비교하는 피연산자의 타입이 다를 경우,
자료형의 범위가 큰 쪽으로 자동 형변환되어 타입을 일치시킨 후에 비교.
1. 대소 비교 연산자
< > <= >=
두 피연산자의 값의 크기를 비교한다. 참이면 true, 거짓이면 false
기본형 중에서는 boolean형을 제외한 나머지 자료형에 다 사용할 수 있지만 참조형에는 사용 불가능하다.
2. 등가비교 연산자
== !=
기본형, 참조형 즉 모든 자료형에 사용 가능하다.
== 두 값이 같으면 true, 다르면 false
!= 두 값이 다르면 true, 같으면 false
예21)
public 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');
}
}
%b : boolean 형식으로 출력
'0' == 0 -> 48 == 0 ->false
'A' ==65 -> 65 == 65 -> true
'A' > 'B' -> 65>66 ->false
'A'+1 != 'B' ->65+1 != 66 ->66 != 66 ->false
예22)
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", d == f);
System.out.printf("(float)d==f %b%n", (float) d == f);
}
}
문자열의 비교
두 문자열을 비교할 때는 == 대신 equals()라는 메서드를 사용
String str = new String("abc"); //String 클래스의 객체를 선언
String str = "abc"; //간단히 표현 가능
예23)
public class OperatorEx23 {
public static void main(String[] args) {
String str1 = "abc";
String str2 = new String("abc");
System.out.printf("1. \"abc\"==\"abc\" ? %b%n", "abc" == "abc");
System.out.printf("2. str1==\"abc\" ? %b%n", str1 == "abc");
System.out.printf("3. str2==\"abc\" ? %b%n", str2 == "abc");
System.out.printf("4. str1.equals(\"abc\") ? %b%n", str1.equals("abc"));
System.out.printf("5. str2.equals(\"ABC\") ? %b%n", str2.equals("ABC"));
System.out.printf("6. str2.equalsIgnoreCase(\"ABC\") ? %b%n", str2.equalsIgnoreCase("ABC"));
}
}
3. 은 str=="abc" 가 false가 나왔다. 내용은 같지만 객체가 달라서 그렇다.
그러나 equals()는 객체가 달라도 내용이 같으면 true를 반환한다. 따라서 문자열을 비교할 때는 equals를 사용한다.
6.처럼 대소문자를 구분하지 않고 비교하고 싶으면 equalsIgnoreCase()사용하자.
'JAVA > 연산자(Operator)' 카테고리의 다른 글
[JAVA] charAt() (0) | 2021.06.08 |
---|---|
[JAVA] 논리 연산자 (0) | 2021.06.08 |
[JAVA] 산술 연산자 (0) | 2021.06.07 |
[JAVA] 증감 연산자/부호 연산자 (0) | 2021.06.06 |
[JAVA] 연산자(operator) (0) | 2021.06.06 |