Java.lang 패키지, java,util 패키지에서 자주 사용하는 클래스
코딩테스트를 풀다보면 lang 패키지, text패키지, util패키지 등을 자주 사용하여 효율적으로 코드를 작성하는 것을 보며
패키지내에 자주 사용하는 클래스들과 메서드를 한번 정리하고자 한다.
String 클래스 내 자주 사용하는 메서드
- charAt(int idx) : char = idx에 해당하는 문자를 char로 변환
- contains(char c) : boolean = char가 포함되어있는지 여부
- concat(String str) : String = 문자열 뒤 str을 합친다.
- compareTo(String str) : int = 문자열 비교, 같으면 1 다르면 0 리턴
- endWith(String suffix) : boolean = suffix로 끝나는지 여부
- startWith(String suffix) : boolean = suffix로 시작하는지 여부
- equals(Object anObject) : boolean = 문자열 그 자체를 비교
- substring(int beginIndex, int endIndex) : String = beginIndex 부터 endIndex까지 문자열을 자른 후 리턴
- getBytes() : byte[] = 문자열을 바이트코드로 인코딩하고 새 바이트 배열에 저장한다.
- indexOf(String str) : int = 해당 문자열의 첫번째 문자에 대한 인덱스를 리턴
- isEmpty() : boolean = 문자열이 비어있는지 여부
- length() : int = 문자열 길이를 반환
- replace(char oldChar, char new Char) : String = oldChar를 모두 newChar로 바꾼 후 문자열 리턴
- split(String regex) : String[] = 해당 문자열을 regex기준으로 나눠 배열을 리턴
- trim():String = 문자열 안의 공백 제거
- toCharArray() : char[] = 문자열을 char배열로 변환
- (static) valuOf(Object obj) : String = obj를 문자열로 변환 후 리턴
- (static) format(String format, Object.. args) : String = 폼화 된 문자열을 리턴한다. (like System.out.printf)
StringBuffer 클래스
StringBuffer 클래스는 성능에 영향을 받지 않고 문자열 처리를 하는 클래스이다. 긴 문자열 조합은 문자열 더하기 대신 StringBuffer를 사용하는 것이 좋다.
- substring(int idx, int idx2) : String
- insert(int idx, String msg) : String
- delete(int idx, int idx) : String
- toString() : String
- append(String msg) : String
- length() : int
- capacity() : int = StringBuffer 인스턴스의 버퍼크기 반환 (자료형의 할당된 크기를 반환)
- reverse() : String
- chatAt(int idx) : char
Wrapper 클래스
자바의 기본 자료형을 객체 타입으로 처리할 수 있도록 만든 클래스이다.
왜 Wrapper 클래스가 따로 존재할까?
1. 메서드에 전달된 arguments를 수정하기 위해서는 기본형 변수들을 참조형 변수로 변환해야 한다.
2. java.util 패키지의 클래스들은 참조형 변수만을 다룬다.
3. CF의 자료구조인 ArrayList와 Vector는 참조형 변수만들 다룬다.
4. 멀티쓰레딩에서 동기화를 지원하려면 참조형변수가 필요하다.
*Integer기준
- intValue():int = 기초타입으로 변환 (언박싱)
- parseInt(String str):int = 문자열을 기초타입으로 변환
- valueOf(String str): Integer = 문자열을 객체타입으로 변환
java.util
이 패키지는 개발할 때 유용한 기능들을 설명한다.
System.클래스
public final static InputStream in // 키보드 입력용 입력 스트림
public final static PrintStream out // 표준 출력을 위한 출력 스트림
public final static PrintStream err // 표준 오류 출력을 위한 출력 스트림
System 클래스는 위와 같은 세 개의 필드를 제공한다.
Date, Calendar 클래스
Date클래스는 인스턴스를 생성한 후 메서드를 호출하여 원하는 기능을 사용하거나. Date클래스를 지원하는 다른 클래스에 파라미터로 전달하여 원하는 정보를 추출하는 형태로 사용한다.
Calendar 클래스는 추상 클래스로, 객체를 생성할 수 없다. 대신 getInstance() 메서드를 사용하여 시스템의 날짜와 시간 정보를 가져온다.
Scanner 클래스
Scanner 클래스는 입력 스트림으로, 간단한 데이터를 입려받는 클래스이다.
입력 스트림을 System.in이 아닌 다른 스트림으로 변경하여 파일이, 네트워크 등에서 받아올 수 있다.
- next()
- nextLine()
- nextInt()
- nextDouble()
등
Random 클래스
Random클래스는 난수를 생성한다.
nextInt() 메서드 사용 시 Integer 범위에서 난수가 나온다. 또한 파라미터 값으로 숫자 n을 제공한다고 하면, 0부터 n-1까지로 난수의 범위를 설정한다.
또한 next와 Primitive Type을 결합하여 해당 자료형의 범위 내의 양수에서 난수를 생성하는 메서드들도 존재한다.
- nextInt(int num):int = 0~num미만의 랜덤한 정수 리턴
- nextDouble():double = 0~1미만의 랜덤한 실수 리턴
- nextBoolean():boolean = true, false중 하나 리턴
StringTokenizer 클래스
StringTokenizer 클래스는 구분자로 연결된 문자열을 손쉽게 분리(파싱)하는 클래스이다. 구분자에는 공백, 콤마, 탭 등을 많이 사용한다.
StringTokenizer st = new StringTokenizer(String str) //띄어쓰기 기준으로 문자열을 분리
StringTokenizer st = new StringTokenizer(String str,String sep) //sep을 기준으로 문자열을 분리
StringTokenizer st = new StringTokenizer(String str,String sep, true/false)
//sep을 기준으로 문자열을 분리할때 구분자도 토큰으로 넣을지 말지 여부판별
StringTokenizer st = new StringTokenizer(String str,":- "); //이처럼 구분자를 여러개 둘 수도 있다.
- hasMoreTokens() : boolean = 남아있는 토큰이 있으면 true리턴, 없다면 false리턴 (while문과 자주사용)
- nextToken() : String = 객체에서 다음 토큰을 반환
*StringTokenizer와 Split의 차이?

참고
- https://jhnyang.tistory.com/entry/JAVA-StringTokenizer-%ED%81%B4%EB%9E%98%EC%8A%A4%EB%A1%9C-%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%B6%84%EB%A6%AC%ED%95%98%EA%B8%B0-split-%EB%B9%84%EA%B5%90
- https://velog.io/@doxxx93/Wrapper-Class%EB%9E%80
- https://velog.io/@jiyong/Java-%EC%9E%90%EC%A3%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-API