[Java의 정석] 비교 연산자

말하는 감자·2023년 11월 12일
0

Java의 정석

목록 보기
27/32
post-thumbnail

Chapter 03 연산자(Operator)

4. 비교 연산자

비교 연산자는 두 피연산자를 비교하는데 사용되는 연산자다. 주로 조건문과 반복문의 조건식에 사용되며, 연산결과는 오직 truefalse 둘 중의 하나이다.
비교 연산자 역시 이항 연산자이므로 비교하는 피연산자의 타입이 서로 다른 경우에는 자료형의 범위가 큰 쪽으로 자동 형변환하여 피연산자의 타입을 일치시킨 훼 비교한다는 점에 주의해야한다.

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

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

📌 등가비교 연산자 == !=

두 피연산자의 값이 값은지 또는 다른지 비교하는 연산자이다.
대소비교 연산자와 달리 모든 자료형에 사용할 수 있다. 기본형의 경우 벼수에 저장되어 있는 값이 같은지를 알 수 있고, 참조형의 경우 객체의 주소값을 저장하기 때문에 두 개의 피연산자(참조변수)가 같은 객체를 가리키고 있는지를 알 수 있따.
기본형과 참조형은 서로 형변환이 가능하지 않기 때문에 등가비교 연산자로 기본형과 참조형을 비교할 수 없다.

📍문자열의 비교

두 문자열을 비교할 때는, 비교 연산자 ==대신 equals()라는 메서드를 사용해야 한다.
비교 연산자는 두 문자열이 완전히 같은 것인지 비교할 뿐이므로, 문자열의 내용이 같은지 비교하기 위해서는 equals()를 사용하는 것이다. equals()는 비교하는 두 문자열이 같으면 true를, 다르면 false를 반환한다.

String str = new String("abc");

// equals()는 두 문자열의 내용이 같으면 true, 다르면 false
boolean result = str.equals("abc");	// 내용이 같으므로 result에 true가 저장됨

원래 String은 클래스이므로, 아래와 같이 new를 사용해서 객체를 생성해야한다.

String str = new String("abc");	// String클래스의 객체를 생성
String str = "abc";				// 위의 무장을 간단히 표현
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"));
	}
}

str2"abc"의 내용이 같은데도 ==로 비교하면, false를 결과로 얻는다. 내용은 같지만 서로 다른 객체라서 그렇다.
그러나 equals()는 객체가 달라도 내용이 같으면 true를 반환한다. 그래서 문자열을 비교할 때는 항상 equals()를 사용해야한다.
만일 대소문자를 구별하지 않고 비교하고 싶으면, equals()대신 equalsIgnoreCase()를 사용하면 된다.


📑 원본 자료

  • Java의 정석(3판) [남궁 성/도우출판/2016]
profile
나는 말하는 감자다

0개의 댓글