JAVA/연산자(Operator)

[JAVA] 비교 연산자

prize1209 2021. 6. 8. 21:14

두 피연산자를 비교하는 데 사용된다. 연산 결과는 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