반응형
✅ 비교 연산자
두 개의 피연산자를 비교하여 결과를 true 혹은 false로 반환한다.
비교 연산자는 주로 조건문(if-else, switch-case)과 반복문(for, while, do-while)에서 사용한다.
두 피연산자의 자료형이 다른 경우, 자동 형변환이 발생한다.
- 자동 형변환은 자료형의 범위가 작은 쪽에서 큰 쪽으로 형 변환된다.
- 동 형변환에 의해 예상치 못한 결과를 가져올 수 있으므로, 자료형을 명시적으로 일치시킨다.
💡 대소 비교
두 개의 피연산자의 값을 비교하여, 결과에 따라 true나 false를 반환한다.
기본 숫자형 변수(int, double, float, char, byte, short, long)에서 사용한다.
- 참조형 변수는 직접 값을 가지지 않기 때문에 대소 비교 연산자를 사용할 수 없다.
- boolean과 같은 논리형 변수에서는 사용할 수 없다.
- double과 float의 경우, 값이 같아도 부동 소수점 오차가 발생할 수 있다.
- 작다(<): 좌변 값이 우변 값보다 작으면 true, 그렇지 않으면 false를 반환한다.
- 크다(>): 좌변 값이 우변 값보다 크면 true, 그렇지 않으면 false를 반환한다.
- 작거나 같다(<=): 좌변 값이 우변 값보다 작거나 같으면 true, 그렇지 않으면 false를 반환한다.
- 크거나 같다(>=): 좌변 값이 우변 값보다 크거나 같으면 true, 그렇지 않으면 false를 반환한다.
int a = 10;
int b = 20;
boolean result1 = (a < b); // true
boolean result2 = (a > b); // false
boolean result3 = (a <= b); // true
boolean result4 = (a >= b); // false
double x = 0.1;
double y = 0.2;
boolean result5 = (x < y); // true
💡 등가 비교
두 개의 피연산자의 값을 비교하여, 결과에 따라 true나 false를 반환한다.
- 기본형 변수를 비교할 때는 변수에 저장되어 있는 값이 같은지 비교한다.
- 참조형 변수를 비교할 때는 객체의 주소값을 비교하여 같은 객체를 가리키고 있는지 비교한다.
- 같음(==): 두 값이 같으면 true, 다르면 false를 반환한다.
- 같지 않음(!=): 두 값이 다르면 true, 같으면 false를 반환한다.
int a = 10;
int b = 20;
boolean result1 = (a == b); // false
boolean result2 = (a != b); // true
String str1 = "Hello";
String str2 = "Hello";
String str3 = new String("Hello");
boolean result3 = (str1 == str2); // true
boolean result4 = (str1 == str3); // false
boolean result5 = (str1.equals(str3)); // true
💡 문자열 비교
기본 비교 연산자(==,!=)로는 문자열의 내용이 같은지를 비교할 수 없으므로 equals() 메서드를 사용한다.
- String 클래스에서 제공하는 메서드이다.
- 두 문자열이 같은 객체인지를 비교하는 것이 아니라, 내용이 같은지를 비교한다.
- 두 개의 문자열을 비교하여 내용이 비교하여, 결과에 따라 true나 false를 반환한다.
String str1 = "Hello";
String str2 = "Hello";
String str3 = new String("Hello");
System.out.println(str1 == str2); // true
System.out.println(str1 == str3); // false
System.out.println(str1.equals(str2)); // true
System.out.println(str1.equals(str3)); // true
- null 값을 비교하는 경우 NullPointerException이 발생할 수 있으므로, null 값 체크를 한다.
- 대소문자를 구분하여 비교하므로, 대소문자를 구분하지 않고 비교하려면 equalsIgnoreCase() 메서드를 사용한다.
- 문자열의 길이를 먼저 비교하고, compareTo() 메서드를 사용하여 사전순으로 비교한다.
반응형