Study/java

[Java] Integer 정수 비교 메소드 compare, max, min, equals

 

Integer의 비교하는 메소드 compare, max, min, equals에 대해서 정리해보겠습니다.

 

compare, compareUnsigned

int a = 10;
int b = -50;
System.out.println("10 compare -50 : " + Integer.compare(a, b));
System.out.println("10 compareUnsigned -50 : " + Integer.compareUnsigned(a, b));

compareTo 사용결과

두 수를 비교하는 메소드입니다.

compare은 인수로 받은 두 수를 그대로 비교한 결과값을 반환하고 compareUnsigned는 절대값을 비교합니다.

왼쪽 숫자가 더 크면 1, 작으면 -1, 같으면 0을 반환합니다.

주로 정렬을 할 때 사용합니다.

 

compareTo

Integer c = 10;
System.out.println("10 compareTo 10 : " + c.compareTo(10));

compareTo 사용결과

compare처럼 두 수를 비교할 때 사용합니다.

compare와 다른 점은 compare은 비교할 두 수를 인자로 받아서 비교하지만, compareTo는 인자가 하나라는 점입니다.

 

두 메소드의 기능은 같고, 반환값도 동일합니다.

차이는 객체를 비교하냐, 인스턴스끼리 비교하냐의 차이입니다.

객체와 인스턴스의 차이를 찾아보면 좋을것 같습니다.

 

참고로 int는 compareTo를 사용할 수가 없습니다.

int를 비교하고 싶다면 compare을 사용하면 됩니다.

 

 

 

 

max, min

int a = 10;
int b = -50;
System.out.println("Max : " + Integer.max(a, b));
System.out.println("Min : " + Integer.min(a, b));

max, min 사용결과

두 수를 받아서 두 수 중에서 큰값, 작은값을 반환해주는 메소드입니다.

내부 로직은 Math 클래스의 max, min 메소드를 사용합니다.

이 메소드를 사용하면 Math 클래스를 import 하지 않고도 큰 값, 작은 값을 찾을 수 있습니다.

 

equals

System.out.println("10 == 10 ? " + new Integer(10).equals(10));

equals 사용결과

Object 클래스에 있는 equals 메소드를 오버라이딩한 메소드입니다.

두 Integer 객체가 같은지 비교하는 메소드입니다.

 

Integer는 객체기 때문에 ==으로 비교하면 제대로 비교할 수 없습니다. 그래서 equals 메소드를 사용하는 것이 좋습니다.