JAVA
[java.util] Objects, Random, 정규식
ewok
2023. 3. 9. 16:25
java.util.Objects 클래스
- Object클래스의 보조 클래스로 모든 메서드가 static이다.
- 객체의 비교나 null 체크에 유용하다.
null check
isNull() // 해당 객체가 null인지 확인해서 null이면 true를 반환하고 아니면 false를 반환한다.
nonNull() // isNull()과 반대이다.
requireNonNull() // 해당 객체가 null이 아니어야 하는 경우에 사용한다.
매개변수의 유효성 검사를 할 때, 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.");
}
객체의 비교
compare()
대소비교를 위해 compare()가 추가되었다.
compare()는 두 비교대상이 같으면 0, 크면 양수, 작으면 음수를 반환한다.
static int compare(Object a, Object b, Comparator c)
equals()
Object클래스에 있는 equals()가 Objects클래스에도 있는데 Objects의 equals()의 장점은 null 검사를 하지 않다도 된다는 것이다.
if(a!=null && a.equals(b)) { // a가 null인지 반드시 확인해야 한다.
...
}
if(Objects.equals(a,b)) { // 매개변수의 값이 null인지 확인할 필요가 없다.
...
}
deepEquals()
객체를 재귀적으로 비교하기 때문에 다차원 배열의 비교가 가능하다.
toString()
내부적으로 null 검사를 한다.
static String toString(Object o)
static String toString(Object o, String nullDefault)
두 번째 메서드는 o가 null일 때, 대신 사용할 값을 지정할 수 있다.
java.util.Random 클래스
Random클래스를 사용해 난수를 얻을 수 있다. Math.random()은 내부적으로 Random클래스의 인스턴스를 생성해서 사용하므로 둘 중 편한 것을 사용하면 된다.
double randNum = Math.random();
double randNum = new Random().nextDouble(); //Double외에도 Int, Long 등이 있다.
예) 1 ~ 6 사이의 난수
int num = (int)(Math.random() * 6) + 1;
int num = new Random().nextInt(6) + 1;
정규식(Regular Expression) - java.util.regex패키지
정규식이란 텍스트 데이터 중에서 원하는 조건(패턴)과 일치하는 문자열을 찾아내기 위해 사용하는 것으로 미리 정의된 기호와 문자를 이용해서 작성한 문자열을 말한다.
정규식을 이용하면
- 많은 양의 텍스트 파일 중에서 원하는 데이터를 손쉽게 뽑아낼 수 있다. (html문서에서 전화번호나 이메일만 추출)
- 입력된 데이터가 형식에 맞는지 체크할 수 있다. (입력한 비밀번호가 숫자와 영문자의 조합으로 되어있는가)
import java.util.regex.*; // Pattern과 Matcher가 속한 패키지
class RegularEx1 {
public static void main(String[] args)
{
String[] data = {"bat", "baby", "bonus",
"cA","ca", "co", "c.", "c0", "car","combat","count",
"date", "disc"};
Pattern p = Pattern.compile("c[a-z]*"); // c로 시작하는 소문자영단어
for(int i=0; i < data.length; i++) {
Matcher m = p.matcher(data[i]);
if(m.matches())
System.out.print(data[i] + ",");
}
}
}
1. 정규식을 매개변수로 Pattern클래스의 static메서드인 Pattern compile(String regex)을 호출하여
Pattern 인스턴스를 얻는다.
Pattern p = Pattern.compile("c[a-z]*");
2. 정규식으로 비교할 대상을 매개변수로
Pattern클래스의 Matcher matcher(CharSequence input)를 호출해서 Matcher인스턴스를 얻는다.
Matcher m = p.matcher(data[i]);
3. Matcher인스턴스에 boolean matcher()를 호출해서 정규식에 부합하는지 확인한다.
if(m.matcher())
[JAVA] ☕ 자바 정규식(Regular Expression) 사용법 💯 정리
정규표현식 이란 정규표현식(Regular Expression)이란 문자열 데이터 중에서 원하는 조건(패턴)과 일치하는 문자열 부분을 찾아내기 위해 사용하는 것으로, 미리 정의된 기호와 문자를 이용해서 작성
inpa.tistory.com