본문 바로가기
기타/백엔드 기초

자바 Java | 비교 연산자: 대소 비교, 등가 비교, 문자열 비교

by YUNI Heo 2023. 2. 15.
반응형

 

✅ 비교 연산자

두 개의 피연산자를 비교하여 결과를 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() 메서드를 사용하여 사전순으로 비교한다.
반응형