'자바의 정석 3rd Edition'를 공부하며 정리한 내용입니다.
종류 | 설명 |
---|---|
isNull() | 해당 객체가 널인지 확인해서 널이면 true를 반환하고 아니면 false를 반환 |
nonNull() | isNull()과 반대 |
requireNonNull() | 해당 객체가 널이 아니어야 하는 경우에 사용. 객체가 널이면 예외를 발생시킴 |
compare() | 두 비교대상이 같으면 0, 크면 양수, 작으면 음수를 반환 |
equals() | Object 클래스의 equals()와 같은 역할을 하지만 내부적으로 널 검사를 진행하기 때문에 따로 널 검사를 할 필요가 없음 (두 비교대상이 모두 널인 경우 참을 반환) |
deepEquals() | 객체를 재귀적으로 비교하기 때문에 다차원 배열의 비교가 가능 |
toString() | Object 클래스의 toString()과 같은 역할을 하지만 내부적으로 널 검사를 진행하기 때문에 따로 널 검사를 할 필요가 없음 |
hashCode() | 내부적으로 널 검사를 한 후 Object 클래스의 hashCode()를 호출 (널일 경우 0을 반환) |
// 1. Math.random() 사용
double randNum = Math.random();
// 2. Random 클래스 사용
double randNum = new Random().nextDouble();
정규식을 정의하고 데이터를 비교하는 과정
1. 정규식을 매개변수로 Pattern 클래스의 static 메서드인 Pattern compile(String regex)을 호출하여 Pattern 인스턴스를 얻음Pattern p = Pattern.compile("c[a-z]*");
- 정규식으로 비교할 대상을 매개변수로 Pattern 클래스의 Matcher matcher(CharSequence input)를 호출해서 Matcher 인스턴스를 얻음
Matcher m = p.matcher(data[i]);
- Matcher 인스턴스에 boolean matches()를 호출해서 정규식에 부합하는지 확인
if(m.matches())
group(int i)
: 정규식의 일부를 괄호로 묶어서 그룹화할 수 있는데 그룹화된 부분은 하나의 단위로 묶이게 되어 한 번 또는 그 이사의 반복을 의미하는 '+'나 '*'가 뒤에 오면 그룹화된 부분이 적용 대상이 됨. 그룹화된 부분은 group(int i)
를 이용해서 나눌 수 있음find()
: 주어진 소스 내에서 패턴과 일치하는 부분을 찾아내면 true를 반환하고 찾지 못하면 false를 반환appendReplacement(StringBuffer sb, String replacement)
를 이용해서 원하는 문자열로 치환할 수 있음StringTokenizer의 생성자와 메서드
생성자/메서드 | 설명 |
---|---|
StringTokenizer(String str, String delim) | 문자열(str)을 지정된 구분자(delim)로 나누는 StringTokenizer를 생성 (구분자는 토큰으로 구분되지 않음) |
StringTokenizer(String str, String delim, boolean returnDelims) | 문자열(str)을 지정된 구분자(delim)으로 나누는 StringTokenizer를 생성함. returnDelims의 값을 true로 하면 구분자도 토큰으로 간주됨 |
int countTokens() | 전체 토큰 수를 반환 |
boolean hasMoreTokens() | 토큰이 남아있는지 알려줌 |
String nextToken() | 다음 토큰을 반환 |
final int signum; // 부호. 1(양수), 0, -1(음수) 셋 중 하나
final int[] mag; // 값
private final BigInteger intVal; // 정수(unscaled value)
private final int scale; // 지수(scale)
private transient int precision; // 정밀도(precision) - 정수의 자릿수