자바에는 기본적으로 제공되는 표준 라이브러리들이 있다.
JDK 안에 포함되어 있음.
알고리즘 및 코딩테스트를 공부하면서 라이브러리에 취약한 것 같아 스니펫 느낌으로 작성.
표준 라이브러리 종류
- Java.lang
- 객체, 클래스, 시스템, 쓰레드, 예외 처리 등과 같은 핵심 기능 포함.
- 자동으로 Import 됨.
- Java.util
- 컬렉션 프레임워크를 포함한 날짜와 시간 처리, 이벤트 모델, 난수 생성, 기본 유틸리티 클래스 등 다양한 유틸리티 클래스와 인터페이스를 제공.
- Java.io
- 입력과 출력(I/O) 기능을 담당하며, 파일 읽기와 쓰기, 데이터 스트림 처리 등을 위한 클래스와 인터페이스를 포함
- Java.math
- 고정밀도 연산을 지원하는 BigInteger, BigDecimal 등의 클래스를 포함
Java.lang 패키지
1. Object Class
Protected Object clone()
- 객체 자신의 복사본을 생성 (깊은 복사)
boolean equals(Object obj)
- 다른 객체가 해당 객체와 같은지 여부
public class Main {
public static void main(String[] args) throws IOException {
String a = null;
String b = "Be-HinD";
System.out.println(b.equals(a));
}
}
위처럼 null 객체에 대해 equals 비교를 하게 될 경우 NPE 에러가 발생하게 됨.
이를 방지하기 위해 java.util.Objects 패키지의 Objects.equals(obj1, obj2)를 사용.
import java.util.Objects;
public class Main {
public static void main(String[] args) {
String a = null;
String b = "Be-HinD";
System.out.println(Objects.equals(a, b));
}
}
null 객체에서 equals() 메서드를 호출하게 될 경우 NPE가 발생하기에 아래처럼 문자열.equals(객체) 형태로 호출하는 습관을 들이면 좋음
import java.util.Objects;
public class Main {
public static void main(String[] args) {
String a = null;
//String b = "Be-HinD";
System.out.println("Be-HinD".equals(a));
}
}
Class<?> getClass()
- 해당 객체의 런타임 클래스를 반환
int hashCode()
- 해당 객체의 hashCode값을 반환
hashCode?
객체의 주소값을 변환하여 생성한 객체의 고유한 정수값
따라서 두 객체가 동일 객체인지 비교할 때 사용할 수 있음.
String클래스의 경우 독특하게 재정의가 되어있음.
문자열의 각 문자를 기준으로 해시값을 생성하기 때문에 같은 문자열일 경우 다른 객체라도 항상 동일한 해시값을 반환.
또한 객체의 값이 변경되지 않는다면 해시값도 변하지 않음. (불변성)
void notify()
- 대기중인 단일 쓰레드를 실행할 때 사용
void notifyall()
- 대기중인 모든 쓰레드를 실행할 때 사용
String toString()
- 객체의 문자열 표현을 반환 (문자열을 제외한 객체에 대해서는 재정의 필요)
2. String Class
char charAt(int index)
- index에 해당하는 자리의 문자열을 반환
int compareTo(String anotherString)
- 두 문자열을 사전식으로 비교 (밑에서 추가 설명)
int compareToIgnoreCase(String anotherString)
- 대소문자를 무시하고 문자열 비교
String concat(String str)
- 문자열의 끝에 매개변수의 문자열을 연결
int indexOf(int ch)
int indexOf(String str)
- 지정된 문자나 문자열이 처음으로 나타나는 문자열 내의 첫번째 인덱스를 반환
int indexOf(int ch, int fromIndex)
int indexOf(String str, int fromIndex)
- 지정된 문자나 문자열이 전달된 인덱스 이후에 처음으로 등장하는 첫번째 인덱스를 반환
- 지정된 인덱스 포함
int lastIndexOf(int ch)
int lastIndexOf(String str)
- 지정된 문자나 문자열이 마지막으로 나타나는 인덱스를 반환
int lastIndexOf(int ch, fromIndex)
int lastIndexOf(String str, fromIndex)
- 지정된 문자나 문자열이 전달된 인덱스 이전에 마지막으로 등장하는 첫번째 인덱스를 반환
- 지정된 인덱스 포함
boolean contains(CharSequence s)
- 매개변수 문자열이 해당 문자열에 포함되어 있다면 true, 없다면 false
- 내부적으로 indexOf() 메서드를 활용
- CharSequence는 인터페이스로, 일반적으로 String, StringBuilder, StringBuffer 등의 객체를 넘길 수 있음
boolean equals(Object anObject)
- 해당 문자열을 지정된 객체와 비교
int length()
- 해당 문자열의 길이를 반환
String replace(char oldChar, char newChar)
- 해당 문자열에서 oldChar에 해당하는 문자를 모두 newChar에 해당하는 문자로 치환 후 반환
String[] split(String regex)
- 주어진 정규 표현식과 일치하는 부분을 중심으로 문자열을 분할
boolean startWith(String prefix)
- 해당 문자열이 지정된 접두사로 시작하는지 여부
boolean endsWith(String suffix)
- 해당 문자열이 지정된 접미사로 끝나는지 여부
String substring(int beginIndex, int endIndex)
- 해당 문자열에서 지정 시작 인덱스 ~ 지정 끝 인덱스 까지의 부분 문자열을 반환
- endIndex가 없을 경우 끝까지
char[] toCharArray()
- 해당 문자열을 새로운 문자 배열로 반환
String toLowerCase()
String toUpperCase()
- 해당 문자열을 모두 소문자로/대문자로 변환
Str.compareTo(String anotherStr)
- 두 문자열을 사전식으로 비교한 값을 반환
- 사전순 비교는 유니코드값을 기준
- A = 65, B = 66, a = 97, b = 98 ...
구체적인 정렬과정
- 첫 번째 문자부터 순차적으로 비교
- 만약 모든 문자가 같다면, 문자열의 길이로 비교 (짧은 문자열이 앞으로)
반환값
반환값은 기본적으로 두 문자의 유니코드 차이값
- 음수
- 현재 문자열이 비교 문자열보다 사전순으로 앞에 있을 때
- 0
- 현재 문자열과 비교 문자열이 동등할 때
- 양수
- 현재 문자열이 비교 문자열보다 사전순으로 뒤에 있을 때
'Language > Java' 카테고리의 다른 글
[Java] 객체 동등 비교 - equlas() (0) | 2024.10.05 |
---|---|
[Java] 인스턴스 변수를 사용하지 않는 메서드는 static을. (0) | 2024.09.07 |
[Java] ArrayList.java (add 메서드 내부 동작) (0) | 2024.03.19 |
Java#1 - 자바공부를 시작하며.. (0) | 2023.04.29 |
개발 기술 블로그, Dev
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!