[Java] 등가 비교 연산
등가 비교 연산자 == !=
두 피연산자의 값이 같은지 또는 다른지를 비교하는 연산자.
기본형은 물론 참조형, 즉 모든 자료형에 사용할 수 있다.
기본형의 경우 변수에 저장되어 있는 값이 같은지 알 수 있고, 참조형의 경우 객체의 주소값을 저장하기 때문에
두 개의 피연산자(참조변수)가 같은 객체를 가리키고 있는지를 알 수 있다.
☑️ 기본형과 참조형은 서로 형변환 X 하여, 기본형과 참조형을 비교 X
- == : 두 값이 같으면, true 아니면 flase
- != : 두 값이 다르면, true 아니면 flase
⭐ 실수형은 근사값으로 저장되므로 오차가 발생할 수 있다
10.0 == 10.0f //true
0.1 == 0.1f //flase
위 예시를 살펴보면
‘10.0 == 10.0f’ 는 true이고, ‘0.1 == 0.1f’는 flase이다.
이는 정수형과 달리 실수형은 근사값으로 저장되므로 오차가 발생할 수 있기 때문이다.
✅ 10.0f는 오차없이 저장할 수 있는 값이라서 double로 형변환해도 그대로 10.0이 된다.
하지만 0.1f는 저장할 때 2진수로 변환하는 과정에서 오차가 발생한다.
double타입의 상수인 0.1도 저장되는 과정에서 오차가 발생하지만 float차입의 리터럴인 0.1f보다 적은 오차로 저장된다.
📌 double은 15자리 float는 7자리까지 정밀도를 가지고 있음
⭐ 문자열의 비교 equals() 메서드
두 문자열을 비교할 때는, 비교 연산자 ‘==’대신 equals()라는 메서드를 사용해야한다.
비교 연산자는 두 문자열이 완전히 같은 것인지 비교할 뿐이므로, 문자열의 내용이 같은 지를 비교하기 위해서는 equals()를 사용한다.
//예시 1
String str = new String("abc");
**// equals()는 두 문자열의 내용이 같으면 true, 다르면 flase**
boolean result = str.equals("abc"); // 내용이 같으므로 result에 true가 저장됨.
// 예시 2
String str = new String("abc");
String str = "abc"; // **간단하게 사용하는 것도 허용됨**
String은 클래스이므로 new를 사용하여 객채를 생성해야한다. 하지만 위처럼 간단하게 사용하는 것도 허용된다.
☑️ 대소문자를 구별하지 않고 비교하고 싶으면 equalsIgnoreCase()를 사용하면 된다.
참고자료 -