JavaScript

웹 개발의 필수 언어

동적인 웹 페이지 구현을 위한 핵심 프로그래밍 언어.

Java

객체지향 프로그래밍

안정적이고 확장성 있는 백엔드 개발의 대표 언어.

HTML

웹의 기초

웹 페이지의 구조를 정의하는 마크업 언어.

React

현대적 UI 라이브러리

효율적인 사용자 인터페이스 구축을 위한 JavaScript 라이브러리.

CSS

웹 디자인의 핵심

웹 페이지의 시각적 표현을 담당하는 스타일 언어.

Spring

자바 웹 프레임워크

기업급 애플리케이션 개발을 위한 강력한 프레임워크.

Java/자바 학습

자바의 비교 연산자

lamarcK 2025. 5. 21. 01:26

기본 이해

개념 정의

비교 연산자는 두 피연산자의 크기나 동등성을 비교하여 true/false의 논리값을 반환하는 연산자다.

일상생활 비유

  • 체육대회에서 달리기 순위 비교
  • 시험 점수 합격선 판단
  • 쇼핑몰에서 상품 가격 비교

존재 이유와 목적

필요성

  • 프로그램의 흐름 제어
  • 데이터 검증
  • 조건부 실행 결정

실제 역할

  1. 조건문의 기준 제공
  2. 데이터 필터링
  3. 정렬 알고리즘 구현
  4. 유효성 검사

해결하는 문제들

  • 데이터 범위 검증
  • 입력값 유효성 확인
  • 비즈니스 로직 구현

핵심 구성요소

주요 연산자

== : 동등 비교
!= : 비동등 비교
<  : 작음
>  : 큼
<= : 작거나 같음
>= : 크거나 같음

작동 방식

int a = 5;
int b = 3;
boolean result1 = a > b;
boolean result2 = a < b;

연산자 우선순위

  1. 단항 연산자
  2. 산술 연산자
  3. 비교 연산자
  4. 논리 연산자

주의사항과 일반적 오류

일반적 실수

객체 비교 시 == 사용 

// 잘못된 예
String str1 = new String("hello");
String str2 = new String("hello");
if (str1 == str2) // false

// 올바른 예
if (str1.equals(str2)) // true

자바에서 == 연산자는 기본 타입(primitive type)일 경우 값 자체를 비교하지만 참조 타입(reference type)의 경우 객체의 주소값을 비교하기 때문에 값이 동일해도 주소가 달라서 false가 나오게 된다.

String str1 = "Hello";
String str2 = "Hello";
System.out.println(str1 == str2);  // true

예외적으로 String 리터럴의 경우 String Pool에서 같은 값을 재사용하므로 == 로 비교해도 true가 나올 수 있다. 하지만 이는 특수한 경우이며, 객체의 내용을 비교할 때는 항상 equals() 메소드를 사용하는 것이 안전하다.

부동소수점 비교

// 잘못된 예
double a = 0.1 + 0.2;
double b = 0.3;
if (a == b) // false

// 올바른 예
if (Math.abs(a - b) < 0.000001) // true

2진법으로는 실수의 소수점을 완벽하게 표현할 수 없기 때문에 조금씩 오차가 발생한다.

부동 소수점에 대해서

비교 분석

비교방식 사용케이스 장점 단점
== 기본타입 비교 간단명료 참조타입에 부적합
equals() 객체 비교 정확한 비교 null 체크 필요
compareTo() 순서 비교 정렬 가능 구현 필요

실무 활용

적용 사례

1. 사용자 인증

if (inputPassword.equals(storedPassword)) {
    login();
}

2. 데이터 검증

if (age >= 18 && age <= 65) {
    processApplication();
}

3. 정렬 알고리즘

if (list.get(i).compareTo(list.get(j)) > 0) {
    Collections.swap(list, i, j);
}

베스트 프랙티스

  1. 객체 비교는 equals() 사용
  2. null 체크 선행
  3. 부동소수점 비교 시 오차 범위 설정
  4. 가독성 있는 비교문 작성

[관련 개념]

  • 기본 데이터 타입
  • 참조 데이터 타입
  • 형변환
  • 연산자 우선순위

[후속 개념]

  • 논리 연산자
  • 조건문(if, switch)
  • Comparable 인터페이스
  • Comparator 인터페이스