[자바의 정석] Ch 9 java.lang패키지와 유용한 클래스

Seri·2024년 7월 7일
1

* 이 글은 책 <자바의 정석 3판 - 남궁성>을 공부한 내용을 바탕으로 작성한 글입니다.

자바프로그래밍에 가장 기본이 되는 클래스들을 포함하고 있다.

Object클래스

  • equals(Object obj) => boolean: 두 객체의 같고 다름을 참조변수의 값으로 판단
    ex) o1.equals(o2)
  • hashCode(): 해시함수
    ex) str1.hashCode()
  • toString(): 인스턴스 변수에 저장된 값들을 문자열로 표현
    ex) str1.toString()
  • clone(): 자신을 복제하여 새로운 인스턴스를 생성. clone은 단순히 객체에 저장된 값을 그대로 복사하는 얕은 복사
    ex) original.clone()
  • getClass(): 자신이 속한 클래스의 Class객체를 반환하는 메서드
    ex) new Card().getClass()

String클래스

StringBuffer vs StringBuilder

String클래스는 인스턴스를 생성할 때 지정된 문자열을 변경할 수 없지만 StringBuffer클래스는 변경이 가능하다. 내부적으로 문자열 편집을 위한 버퍼(buffer)를 가지고 있으며, StringBuffer인스턴스를 생성할 때 그 크기를 지정할 수 있다. StringBuffer는 멀티쓰레드에 안전하도록 동기화되어 있다. StringBuffer의 동기화는 불필요하게 성능만 떨어뜨리게 되기 때문에 쓰레드의 동기화만 뺀 StringBuilder가 새로 추가되었다.

StringBuffer sb;
sb = new SrtingBuffer();
sb.append("abc");
StringBuilder sb;
sb = new StringBuilder();
sb.append("abc");
StringStringBufferStringBuilder
String은 불변 객체(immutable)입니다. 문자열을 만들면 그 값을 변경할 수 없습니다. 새로운 문자열을 만들 때마다 새로운 객체가 생성됩니다. 문자열 연산 시 새로운 객체가 생성되므로 메모리 사용량이 증가할 수 있습니다. 멀티스레드 환경에서 안전합니다.StringBuffer는 가변 객체(mutable)입니다. 문자열을 변경할 수 있습니다. 문자열 연산 시 기존 객체를 수정합니다. 멀티스레드 환경에서 동기화(synchronized)를 지원하여 스레드 안전합니다. 동기화로 인해 성능이 저하될 수 있습니다.StringBuilder는 가변 객체(mutable)입니다. 문자열을 변경할 수 있습니다. 문자열 연산 시 기존 객체를 수정합니다. 멀티스레드 환경에서 동기화를 지원하지 않습니다. 동기화가 필요 없어 StringBuffer보다 성능이 좋습니다.
profile
🎤 📷 ❄️ 🌊

0개의 댓글