JAVA 기초

[JAVA 기초] JAVA의 정석 - Ch.09 Java.lang 패키지와 유용한 클래스 (정리)

beginner-in-coding 2025. 1. 16. 15:23

Ch.09 Java.lang 패키지와 유용한 클래스


-      Java.lang 패키지

  • Object 클래스
    • 최고 조상이기 때문에 모든 클래스에서 사용가능한 메서드들이 정의되어 있음
    • Object 클래스의 메서드 (일부)
      1. Object clone()  //객체 자신의 복사본 반환
      2. boolean equals(Object obj)  //객체 자신과 obj가 같은 객체인지 반환
      3. Class getClass()  //객체 자신의 클래스 정보를 담고 있는 Class인스턴스를 반환
      4. int hashCode()  //객체 자신의 해시코드를 반환
      5. 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 클래스
    • 정밀도를 더 높이기 위해서 사용