유용한 클래스
java.util.Objects클래스
Object클래스의 보조 클래스 모든 메서드가 'static'이다
객체의 비교나 널 체크에 유용하다
isNull() - null이면 true 아니면 false
nonNull() null이 아니면 true
requireNonNull() 해당 객체가 널이 아닌경우에 사용
매개변수의 유효성 검사없이 requireNonNull() 호출 | |
void setName(String name) { if(name == null) throw new NullPointerException("name must not be null."); this.name = name; } |
void setName(String name) { this.name = Objects.requireNonNull( name, "name must not be null."); } |
Objects에는 대소비교를 위한 compare()가 추가되었다
같으면 0, 크면 양수, 작으면 음수를 반환한다
static int compare (Object a, Object b, Comparator c)
jave.util.Random 클래스
double randNum = Math.random(); //Math.random() 활용
double randNum = new Random() .nextDouble();
둘의 가장 큰 차이점은 종자값(seed)을 설정할 수 있다는 것이다
Random클래스의 생성자와 메서드
생성자 Random()은 currentTimeMillis()를 종자값으로 한다
public Random() {
this.(System.currentTimeMillis()); }
메서드 | 설명 |
Random() | 현재시간을 종자값으로 이용하는 Random 인스턴스 생성 |
Random(long seed) | 매개변수 seed를 종자값으로 하는 Random인스턴스 생성 |
boolean nextBoolean() | boolean타입의 난수를 반환 |
void nextBytes(byte[] bytes) | bytes배열에 byte타입의 난수를 채워 반환 |
double nextDouble() | double 타입의 난수를 반환 (0.0 <= x <1.0) |
float nextFloat() | float타입의 난수를 반환 (0.0 <= x <1.0) |
double nextGaussian() | 평균은 0.0이고 표준편차는 1.0인 가우시간분포에 따른 double형의 난수를 반환 |
int nextInt() | int타입의 난수를 반환 |
int nextInt(int n) | 0~n의 범위에 있는 int값 반환(n은 범위포함 x) |
long nextLong() | long타입의 난수 반환(long의 범위) |
void setSeed(long seed) | 종자값을 주어진 값으로 변경 |
Math.random()을 이용할때 유용한 메서드
int[] fillRand(int[] arr, int from, int to) 배열 arr을 from과 to범위의 값들로 채워서 반환한다 int[] fillRand(int[] arr, int[] data) 배열 arr을 배열 data에 있는 값들로 채워서 반환한다 int getRand(int from, int to) from과 to범위의 정수(int)값을 반환한다. from과 to 모두 범위에 포함된다 |
정규식(Regular Expression) : 텍스트 데이터중에 원하는 조건과 일치하는 문자열을 찾아내기 위해 사용
java.util.regex.Pattern
1. 정규식을 매개변수호 Pattern 클래스의 static 메서드인 Pattern compile(String regex)을
호출하여 Pattern 인스턴스를 얻는다
pattern p = Pattern.compile("c[a-z]"*);
2. 정규식으로 비교할 대상을 매개변수로 Pattern 클래스의 Matcher matcher를 호출해서
Matcher 인스턴스를 얻는다
Matcher m = p.matcher(data[i]);
3. Matcher 인스턴스에 boolean matches()를 호출해서 정규식에 부합하는지 확인
if(m.matches())
java.util.StringTokenizer 클래스
긴 문자열을 지정된 구분자를 기분으로 토큰이라는 여러 개의 문자열로 잘라내는 데 사용된다
구분자로 단 하나의 문자밖에 사용하지 못한다
생성자/메서드 | 설명 |
StringTokenizer (String str, String delim) | 문자열(str)을 지정된 구분자(delim)로 나누는 StringTokenizer를 생성한다 (구분자는 토큰으로 간주 x) |
StringTokenizer (String str, String delim, boolean returnDelims) |
문자열(str)을 지정된 구분자(delim)로 나누는 StringTokenizer를 생성한다 returnDelims의 값을 true로 하면 구분자도 토큰으로 간주된다 |
int countTokens() | 전체 토큰의 수를 반환한다 |
boolean hasMoreTokens() | 토큰이 남아있는지 알려준다 |
String nextToken | 다음 토큰을 반환한다 |
java.math.BigInteger 클래스
내부적으로 int배열을 사용하여 값을 다룬다.
long타입보다 훨씬 큰 값을 다룰 수 있지만 성능은 떨어진다.
BigInteger val;
val = new BigInteger();
val = new BigInteger( , );
val = new BigInteger.valueOf();
BigInteger의 연산
정수형으로 사용할 수 있는 모든 연산자와 수학적인 계산을 쉽게해주는 메서드들이 정의되어 있다.
비트 연산 메서드
큰 숫자를 다루기 위한 클래스이다
성능을 향상시키기 위해 비트단위로 연산을 수행하는 메서드들을 많이 가지고 있다
int bitCount()
int bitLength()
boolean testBit(int n)
BigInteger setbit(int n) //우측에서 n+1번째 비트를 1로 변경
BigInteger clearbit(int n) //우측에서 n+1번째 비트를 0으로 변경
BigInteger flipbit(int n) //우측에서 n+1번째 비트를 전환
java.math.BigDecimal 클래스
정수를 이용해서 실수를 표현한다
BigDecimal를 생성할 때 문자열을 숫자로 표현하는 것이 일반적이다
BigDecimal val;
val = new BigDecimal();
val = BigDecimal.valurOf();
**double 타입의 값을 매개변수로 갖는 생성자를 사용하면 오차가 발생한다
BigDecimal을 문자열로 반환
String toPlainString()
String toString()
반올림모드 divide()와 setScale()
나눗셈의 결과를 어떻게 반올림(roundingMode)처리할 것인지와,
몇 번째 자리(scale)에서 반올림할 것인지를 지정할 수 있다.
scale의 변경
setScale()을 이용하면 된다
BigDecimal setScale(int newScale)
BigDecimal setScale(int newScale, int roundingMode)
BigDecimal setScale(int newScale, RoundingMode mode)
divide()를 호출할 때처럼 오차가 발생할 수 있어 반올림 모드를 지정해야한다.