자바의 정석 chapter 9

inho ha·2022년 3월 4일
0

자바의 정석

목록 보기
10/18

java.lang 패키지

자바에 기본이 되는 클래스들을 포함하고 있음
import 없이 사용 가능

object 클래스의 메서드

boolean equals(Object obj) : 참조변수의 값이 같은지 비교

int hashCode() : 객체의 주소값을 이용해서 해시코드를 만들어 반환

clone() : 자신을 복제하여 새로운 인스턴스를 생성하여 리턴
인스턴스 값만 복사하기 때문에 참조 변수 타입이 있는 경우 오버라이딩 필요
JDK 1.5부터 공변 반환타입(covariant return type) 이 추가됨
오버라이딩시 조상 메서드의 반환타입을 자손 클래스의 타입으로 변경을 허용하는 것

getClass() : 자신이 속한 클래스의 class객체를 리턴
class객체 : 클래스의 모든 정보를 담고있음, 클래스당 1개만 존재, 클래스 파일을 읽어서 사용하기 편한 형태로 저장해 놓은 것

string 클래스

  1. 변경 불가능한 클래스
String a = "a";
String b = "b";
String a = a + b;

이것은 a의 문자열이 변경된 것이 아니라 새로운 문자열이 생성된 것

  1. 문자열 리터럴
    "abc" 와 같은 문자열 리터럴은 컴파일 시에 클래스 파일에 저장되어 같은 리터럴은 하나의 인스턴스를 공유한다.

  2. join(string s, string[] s_arr)
    여러 문자열 사이에 구분자를 넣어 결합한다.

  3. split(string s)
    구분자로 끊어서 문자열 배열 리턴

  4. getBytes(String 인코딩타입)
    문자열의 문자 인코딩을 다른 인코딩으로 변경
    자바는 UTF-16 이 기본

  5. String.format()
    printf 같은 방식으로 문자열 생성

  6. String.valueOf()
    기본형 타입을 문자열로 변환

StringBuffer 클래스

문자열 편집이 가능한 클래스

멀티쓰레드에 안전하도록 동기화되어 있는데 동기화가 stringbuffer 의 성능을 떨어뜨린다.

StringBuilder 클래스

StringBuffer에서 쓰레드의 동기화만 뺀 클래스

StringBuffer도 충분히 성능이 좋아서 잘 쓰지는 않는다.

wrapper 클래스

기본형 변수를 객체로 사용할때 사용

JDK1.5 이전에는 기본형과 참조형 간의 연산이 불가능했음
이후에는 컴파일러가 자동으로 변환해주기 때문에 연산이 가능함

Autoboxing : 기본형 값을 래퍼 클래스의 객체로 자동 형변환 해주는 것
Unboxing : 래퍼 클래스의 객체 값을 기본형으로 자동 형변환 해주는 것

유용한 클래스

  1. java.util.Objects
    매개변수의 유효성 검사를 requireNonNull() 로 간단하게 가능
    Objects.equals 사용시 null 검사 하지 않아도 됨

  2. java.util.Random
    Math.Random() 도 난수를 얻을 수 있지만
    이 클래스는 seed 설정이 가능하다.
    fillRand 로 랜덤 값으로 배열 채우기 가능

  3. java.util.regex 패키지
    정규식에 사용

  4. java.util.scanner
    입력소스로부터 문자데이터 읽어오는데 도움을 줌

  5. java.util.StringTokenizer
    긴 문자열을 지정된 구분자를 기준으로 토큰이라는 여러 개의 문자열로 잘라내는 데 사용

  6. java.math.BigInteger
    내부적으로 int배열을 사용해서 long 보다 큰 값 다룰수 있게 해줌
    String 처럼 불변임

  7. java.math.BigDecimal
    정수를 이용해 실수를 오차없이 표현함

profile
iha / ian / inho ha

0개의 댓글