Ch.09 Java.lang 패키지와 유용한 클래스
- Java.lang 패키지
- Object 클래스
- 최고 조상이기 때문에 모든 클래스에서 사용가능한 메서드들이 정의되어 있음
- Object 클래스의 메서드 (일부)
- Object clone() //객체 자신의 복사본 반환
- boolean equals(Object obj) //객체 자신과 obj가 같은 객체인지 반환
- Class getClass() //객체 자신의 클래스 정보를 담고 있는 Class인스턴스를 반환
- int hashCode() //객체 자신의 해시코드를 반환
- String toString() //객체 자신의 정보를 문자열로 반환
- 얕은 복사와 깊은 복사
- 얕은 복사: 두 참조변수가 같은 인스턴스 객체를 가리키는 것 (주소가 같은 곳)
- 깊은 복사: 두 참조변수가 각각의 인스턴스 객체를 가리키게 하는 것 (주소가 다른 것)
- String 클래스
- 변경 불가능한(immutable) 클래스
- 문자열을 저장하기 위한 클래스
- 문자열이 char [] 배열로 저장됨
- String 인스턴스가 가지고 있는 문자열은 변경이 불가능하고 읽기만 가능 → 문자열을 결합하는 경우 기존의 문자열에 추가되는 것이 아닌 새로운 문자열 인스턴스를 만드는 것
- new String()을 사용하는 경우 같은 문자열을 가져도 다른 주소값을 가지기 때문에 equals를 통한 비교를 해야 같은 문자열을 가짐을 알 수 있음
- String 클래스의 메서드 정리 참고
- StringBuffer와 StringBuilder 클래스
- String 클래스와 다르게 기존의 문자열에 추가가 가능한 클래스
- 내부적으로 문자열 편집을 위한 buffer를 가지고 있음
- equals()가 오버라이딩 되어 있지 않으므로 값을 비교하기 위해서는 toString()을 이용
- StringBuffer과 StringBuilder의 차이
- StringBuffer: 멀티스레드에 안전(동기화 O)
- StringBuilder: 멀티스레드의 환경이 아닌 경우 성능을 떨어트리는 StringBuffer 대체 클래스(동기화 O)
- Math 클래스
- 기본적으로 수학계산에 필요한 메서드로 구성
- Math 클래스의 메서드는 모두 static
- 래퍼(wrapper) 클래스
- 기본형 변수를 객체로 다뤄야 하는 경우에 사용
- 매개변수로 객체를 요청
- 기본값이 아닌 객체로 저장해야 하는 경우
- 객체 간의 비교가 필요한 경우
- Number 클래스: 숫자와 관련된 클래스들의 조상
- 기본형 변수를 객체로 다뤄야 하는 경우에 사용
- 유용한 클래스
- java.util.Objects 클래스
- Object 클래스의 보조 클래스
- 모든 메서드가 static
- java.util.Random 클래스
- Math.random()이 내부적으로 Random 클래스의 인스턴스를 생성해서 사용하는 것
- 난수 생성할 때 사용
- seed 설정 가능
- 정규식(Regular Expression) – java.util.regex 패키지
- 텍스트 데이터 중 원하는 조건(패턴)과 일치하는 문자열을 찾아내기 위해 사용
- 사용하는 곳
- 원하는 데이터 뽑기
- 입력된 데이터의 형식 확인
- java.util.Scanner 클래스
- 화면, 파일, 문자열과 같은 입력소스로부터 문자 데이터를 읽어오는 데 사용
- java.util.StringTokenizer 클래스
- 긴 문자열을 지정된 구분자(delimiter)를 기준으로 토큰(token)이라는 여러 개의 문자열로 잘라내는 데 사용
- java.math.BigInteger 클래스
- 더 큰 정수값을 다루기 위해서 사용
- java.math.BigDecimal 클래스
- 정밀도를 더 높이기 위해서 사용
'JAVA 기초' 카테고리의 다른 글
[JAVA 기초] JAVA의 정석 - Ch.11 컬렉션 프레임웍 (정리) (1) | 2025.01.21 |
---|---|
[JAVA 기초] JAVA의 정석 - Ch.10 날짜와 시간 & 형식화 (정리) (4) | 2025.01.17 |
[JAVA 기초] JAVA의 정석 - Ch.08 예외 처리(Exception handling) (정리) (1) | 2025.01.16 |
[JAVA 기초] JAVA의 정석 - Ch.07 객체지향 프로그래밍 II (정리) (1) | 2025.01.15 |
[JAVA 기초] JAVA의 정석 - Ch.06 객체지향 프로그래밍 I (정리) (1) | 2025.01.15 |