728x90
비교 연산자
비교 연산자는 동등(==, !=) 또는 크기(<, <=, >, >=)를 평가해서 boolean 타입인 true/false를 산출한다. 주로 흐름 제어문인 조건문(if), 반복문(for, while)에서 실행 흐름을 제어할 때 사용한다.
구분 | 연산식 | 설명 | ||
동등 비교 | 피연산자1 | == | 피연산자2 | 값이 같은지 |
피연산자1 | != | 피연산자2 | 값이 다른지 | |
크기 비교 | 피연산자1 | > | 피연산자2 | 피연산자1이 피연산자2 보다 큰지 |
피연산자1 | >= | 피연산자2 | 피연산자1이 피연산자2 보다 크거나 같은지 | |
피연산자1 | < | 피연산자2 | 피연산자1이 피연산자2 보다 작은지 | |
피연산자1 | <= | 피연산자2 | 피연산자1이 피연산자2 보다 작거나 같은지 |
만약 두 피연산자의 타입이 다를 경우 비교 연산을 수행하기 전에 타입을 일치시킨 후 수행한다.
'A' == 65
'A'가 int 타입으로 변환되어 65가 된 다음 65==65로 비교한다.
3 == 3.0
3을 double 타입인 3.0으로 변환 후 3.0 == 3.0으로 비교한다.
0.1f == 0.1
0.1f를 double 타입으로 변환 후 0.1 == 0.1로 비교하면 된다 생각했지만 여기는 예외다.
부동 소수점 방식을 사용하는 실수 타입은 0.1을 정확히 표현 못 하며 float 타입과 double 타입의 정밀도 차이 때문이다.
0.1 == (float) 0.1
이 둘을 비교하려면 0.1을 float 타입으로 강제 변환 후 비교 연산을 진행한다.
문자열 비교
문자열은 동등(==, !=) 연산자 대신 equals()와 !equals()를 사용한다.
boolaen result = str1.equals(str2);
boolean result = ! str1.equals(str2);
예제 코드
package ch03.sec06;
public class CompareOperatorExample {
public static void main(String[] args) {
int num1 = 10;
int num2 = 10;
boolean result1 = (num1 == num2);
boolean result2 = (num1 != num2);
boolean result3 = (num1 <= num2);
System.out.println("result1 : " + result1); // true
System.out.println("result2 : " + result2); // false
System.out.println("result3 : " + result3); // true
char char1 = 'A';
char char2 = 'B';
boolean result4 = (char1 > char2); // 65 > 66
System.out.println("result4 : " + result4); // false
int num3 = 1;
double num4 = 1.0;
boolean result5 = (num3 == num4);
System.out.println("result5 : " + result5); // true
float num5 = 0.2f;
double num6 = 0.2;
boolean result6 = (num5 == num6);
boolean result7 = (num5 == (float) num6);
System.out.println("result6 : " + result6); // false
System.out.println("result7 : " + result7); // true
String str1 = "자바";
String str2 = "Java";
boolean result8 = (str1.equals(str2));
boolean result9 = (!str1.equals((str2)));
System.out.println("result8 : " + result8); // false
System.out.println("result9 : " + result9); // true
}
}
728x90
'IT > Java' 카테고리의 다른 글
[Java] 비트 논리 연산자 / 비트 이동 연산자 (0) | 2024.02.21 |
---|---|
[Java] 논리 연산자 (0) | 2024.02.21 |
[Java] 나눗셈 연산 후 NaN과 Infinity (0) | 2024.02.21 |
[Java] 오버플로우와 언더플로우 (0) | 2024.02.20 |
[Java] 산술 연산자 (0) | 2024.02.20 |