2. 유용한 클래스
2-1 javja.util.Objects클래스
isNull()은 해당 객체가 널인지 확인해 null이면 true를, 아니면 false를 반환한다.
static boolean isNull(Object obj)
nonNull()은 반대의 역할을 한다.
static boolean nonNull(Object obj)
compare()는 두 비교대상이 같으면 0, 크면 양수, 작으면 음수를 반환한다.
static int compare(Object a, Object b, Comparator c)
이 메서드는 a,b두 객체를 비교하는데, 여기서 사용할 비교 기준이 c다.
equals()의 내부에서 a와 b가 같은지 비교한다. Object의 equals와 다른 점은 null검사를 하지 않아도 되는데 있다. a와 b가 모두 null인 경우 참을 반환한다.
static boolean equals(Object a, Object b)
deepEquals()는 객체를 재귀적으로 비교하기 때문에 다차원 배열의 비교도 가능하다.
String[][] str2D = new String[][]{{"aaa","bbb"},{"AAA","BBB"}};
String[][] str2D2 = new String[][]{{"aaa","bbb"},{"AAA","BBB"}};
System.out.println(Objects.equals(str2D, str2D2)); // false
System.out.println(Objects.deepEquals(str2D, str2D2)); // true
위와 같이 두 2차원 문자열 배열을 비교할 때, equals로는 반복문을 사용해야 했지만, deepEquals()로는 간단히 끝난다.
toString()도 equals처럼 내부적으로 널 검사를 하는 것 빼고는 같은 작용을 한다.
hashCode()도 내부적으로 널 검사를 한 후에 Object클래스의 hashCode()를 호출할 뿐이다. 널일 떄는 0을 반환한다.
static int hashCode(Object o)
static int hash(object.. values)
Objects와 Object의 메서드중 이름이 같은 것들은 컴파일러가 구분을 못하므로 충돌이 난다.
클래스 이름을 붙여주도록 하자.
2-2 java.util.random클래스
int num = (int)(Math.random()*6) + 1;
int num = new Random().nextInt(6) + 1; // nextInt(6)은 0~6사이의 정수를 반환
Random은 Math.random()과 다르게 종자값(seed)를 설정할 수 있다. 종자값이 같은 랜덤 인스턴스들은 항상 같은 난수를 같은 순서대로 반환한다.
Random클래스의 생성자와 메서드
p.500 참조
스캐너,토크나이저,빅
'java > 요약정리' 카테고리의 다른 글
자바의 정석 9장 (1) java.lang패키지 (0) | 2018.07.09 |
---|---|
자바의 정석 8장 (1) 예외처리(exception handling) (0) | 2018.07.09 |
자바의 정석 7장 (8) 내부 클래스(inner class) (0) | 2018.07.06 |
자바의 정석 7장 (7) 인터페이스(interface) (0) | 2018.07.06 |
자바의 정석 7장 (6) 추상클래스(abstract class) (0) | 2018.07.06 |