본문 바로가기

2023.11.21-2024.05.31

231221 JAVA Wrapper02(래퍼클래스)

package com.sukgi.wrapper;

 

public class Wrapper02 {

 

public static void main(String[] args) {

// 포장값 비교하기

// 포장값 비교하기 위해서 ==, =! 같은 연산자를 사용하지 않는 것.

// 이 연산자는 내부 값을 비교하는 것이 아니라 포장 객체의 참조를 비교

Integer obj1 = 127;

Integer obj2 = 127;

 

System.out.println(obj1 == obj2);

System.out.println("=======================================");

 

Integer obj3 = 300;

Integer obj4 = 300;

 

System.out.println(obj3 == obj4);//false로 나온다.

// 보통은 -128부터 127까지의 범위 내에서, 즉 Byte.MIN_VALUE에서 Byte.MAX_VALUE까지의 작은 정수에 대해서는 캐싱이 이루어집니다. 이 범위 내에서는 동일한 값에 대해 동일한 Integer 객체를 재사용하게 됩니다.

그러나 주어진 코드에서 Integer obj3 = 300;와 Integer obj4 = 300;는 범위를 벗어나는 큰 정수 값입니다.

이 경우, 캐싱이 이루어지지 않고 각각 다른 객체로 처리됩니다. 따라서 obj3 == obj4는 false가 되는 것이 맞습니다.

System.out.println("=======================================");

 

// 값 비교는?

// compateTo()

obj1 = 127;

obj2 = 10;

 

int result = obj1.compareTo(obj2);// 두 개체의 크기 비교

System.out.println(result);

// -1 0 1

System.out.println("=======================================");

if (result == 0) {

System.out.println("값이 같습니다.");

 

} else if (result < 0) {// -1

System.out.println("다릅니다./obj2가 클때");

 

} else {// 1

System.out.println("다릅니다./obj1이 클때");

 

}

 

}

 

}

true

=======================================

false

=======================================

1

=======================================

다릅니다./obj1이 클때

 

 

* compareTo() 메서드는 Comparable 인터페이스를 구현한 클래스에서 사용할 수 있는 메서드로,

두 객체의 크기를 비교할 때 사용됩니다. 이 메서드는 일반적으로 정렬이나 순서 매기기와 같은 작업에서 활용됩니다.

compareTo() 메서드의 반환값은 다음과 같은 규칙을 따릅니다:

  • 만약 this 객체가 other 객체보다 작다면, -1을 반환합니다.
  • 만약 this 객체와 other 객체가 같다면, 0을 반환합니다.
  • 만약 this 객체가 other 객체보다 크다면, 1을 반환합니다.

이러한 규칙은 자연 순서를 따르는 객체들에 대해 비교를 할 때 일반적으로 사용됩니다. 예를 들어, 정수의 경우 숫자 크기를 기준으로 비교됩니다