프로그래밍/JAVA

[JAVA] Objects 클래스

리신 2022. 12. 13. 00:09
반응형

java.util.Objects클래스는 Object 클래스의 보조 클래스로 모든 메서드가 static이다.

객체의 비교나 널 체크에 유용하다.


Null Check

Object.isNull(null);   // true
Object.nonNull(null);  // false

- isNull():  해당 객체가 널인지 확인해서  null이면 true를 반환하고 아니면  fasle를 반환함.

- nonNull():  isNull()과 반대로 null인지 확인해서 null이면 false 아니면 true를 반환함.

Object.requireNonNull(null, "NullPointException 발생시킴");

-  requireNonNull() : 객체가 null이면, NullPointException 예외가 발생시킨다.


Compare()

static int compare(Object a, Object b, Comparator c)

compare() : 두 비교대상이 같으면 0, 크면 양수, 작으면 음수를 반환함.

 


equals(), deepEquals()

String[][] str2D = new String[][] {{"aaa", "bbb"}, {"AAA", "BBB"}};
String[][] str2D_2 = new String[][] {{"aaa", "bbb"}, {"AAA", "BBB"}};
 
Objects.equals(str2D, str2D_2);        // false
Objects.deepEquals(str2D, str2D_2);    // true

- equals() : Object에 있는 메서드와 다르게 Objects의 equals()는 null 검사를 하지 않아도 된다.
                       → 메소드의 내부에서 a와 b의 널 검사를 하기 때문이다.

- deepEquals():  말 그대로 깊은 비교이다. 이 메서드는 객체를 재귀적으로 비교하여 다차원 배열의 비교도 가능하다.


toString()

static int hashCode(Object o)
static int hash(Object o, String nullDefault)

- equals()는 null 검사를 한다.

- 두 번째 메소드 같은 경우 o가 null일 때, 대신 사용할 값을 지정 할 수 있다.

 


hashCode()

Objects.hashCode(null);    // 0

- 내부적으로 null 검사를 한 뒤에 Object클래스의 hashCode()를 호출함.

- 대신 null일 때는 0을 반환함.

 

 

 

*참고서적

Java의 정석

 

반응형