티스토리 뷰

Java/기본

023. 자바 : 비교연산자

따강아지 2022. 3. 6. 17:03

비교 연산자는 두 개의 피연산자를 가지는 이항 연산자로 크기 비교( >, <, <=, >= ), 등가 비교 ( ==,!= )가 있으면 메모리의 값을 비교합니다, 즉 왼쪽의 피연산자와 오른쪽의 피연산자를 비교하여, 어느 쪽이 더 큰지, 작은지, 또는 서로 같은지를 판단합니다. ( Stack에 있는 값 )

== 왼쪽의 피연산자와 오른쪽의 피연산자가 같으면 참을 반환
!= 왼쪽의 피연산자와 오른쪽의 피연산자가 같지 않으면 참을 반환
> 왼쪽의 피연산자가 오른쪽의 피연산자보다 크면 참을 반환
>= 왼쪽의 피연산자가 오른쪽의 피연산자보다 크거나 같으면 참을 반환
< 왼쪽의 피연산자가 오른쪽의 피연산자보다 작으면 참을 반환
<= 왼쪽의 피연산자가 오른쪽의 피연산자보다 작거나 같으면 참을 반환

1. 정수형 비교 ( 기본 자료형 )

기본 자료형을 사용하는 지역 변수는 메모리에 저장되는 장소는 Stack로 비교 연산은 메모리 Stack에 있는 실제 값을 비교하여 결과를 참/거짓으로 반환합니다.

public class ComparisonOperators {
   public static void main(String[] args) {
      int numA = 10;
      int numB = 20;

      System.out.println(String.format("%s > %s : %s", numA, numB, (numA > numB)));  // false
      System.out.println(String.format("%s < %s : %s", numA, numB, (numA < numB)));  // true
      System.out.println(String.format("%s >= %s : %s", numA, numB, (numA < numB))); // true
      System.out.println(String.format("%s <= %s : %s", numA, numB, (numA < numB))); // true

      System.out.println(String.format("%s == %s : %s", numA, numB, (numA == numB))); // false
      System.out.println(String.format("%s != %s : %s", numA, numB, (numA != numB))); // true
   }
}

2. 참조 자료형

String str01 = new String("안녕");
String str02 = new String("안녕");

System.out.println(String.format("%s == %s : %s"
    , str01, str02, (str01 == str02))); // 1)
    
System.out.println(String.format("%s equals %s : %s"
    , str01, str02, (str01.equals(str02)))); // 2)

System.out.println(String.format("%s = %s : %s"
   , numA, numB, (numA = numB))); // 3)

1) 결과 : 안녕 == 안녕 : false

   -> str01, str02는 모두 문자열 객체로 new로 객체를 생성하여서 실제 Data는 Heap 저장되고 Stack에 있는 str01, str02의 값은 실제 Data의 주소로 100과 200가 저장됩니다. == 비교 연산자는 비교하는 변수의 메모리 값에 대한 비교로 각각 100, 200을 비교하게 됩니다. 그러므로 str01, str02의 비교는 거짓입니다.

2) 결과 : 안녕 equals 안녕 : true
   -> equals는 str01, str02가 참조하고 있는 주소의 실제 값을 안녕과 안녕을 비교하는 것으로 참( True )입니다.

3) 10 = 20 : 20 = > = 는 비교 연산자가 아니라 대입 연산자입니다.

'Java > 기본' 카테고리의 다른 글

025. 자바 : 삼항연산자  (0) 2022.03.06
024. 자바 : 논리 연산자  (0) 2022.03.06
022. 자바 : 시프트연산자  (0) 2022.03.06
021. 자바 : 비트연산자  (0) 2022.03.06
020. 자바 : 증감연산자  (0) 2022.03.06