상세 컨텐츠

본문 제목

자바강의 - [5주차] 객체와 객체 지향 프로그래밍 핵심 (3)

Programming/Java

by leediz 2022. 2. 21. 21:12

본문

자바강의 - [5주차] 객체와 객체 지향 프로그래밍 핵심 (3)


Object 클래스 - 모든 클래스의 최상위 클래스

  • java.lang 패키지는 자바프로그래밍에 가장 기본이 되는 클래스들을 포함하고 있음
  • java.lang 패키지의 클래스들은 import문 없이도 사용할 수 있음
  • 모든 클래스는 Object 클래스를 상속받음
  • 모든 클래스의 최상위 클래스
  • 모든 클래스는 Object에서 상속받고, Object 클래스의 메서드 중 일부는 재정의해서 사용할 수 있음
  • 컴파일러가 extends Object를 추가함

equals() 메서드

  • 두 인스턴스의 주소 값을 비교하여 true/false 값을 반환
  • 재정의(overriding)하여 두 인스턴스가 논리적으로 동일한지 여부를 구현함
  • 예제 코드
class Person {
    long id;

    public boolean equals(Object obj) {
      if (obj instance of Person) {
            return id == ((Person)obj).id;
        }
        else
            return false;
    }
}

hashCode() 메서드

  • 해싱(hashing) 기법에 사용되는 ‘해시함수(hash function)’를 구현한 것
  • 찾고자 하는 값을 입력하면 그 값이 저장된 위치를 알려주는 해시코드(hash code)를 반환
  • 같은 클래스의 인스턴스변수 값으로 객체의 같고 다름을 판단해야 하는 경우 equals 메서드와 함께 hashCode 메서드도 오버라이딩 해야 함

String 클래스

  • 변경 불가능한(immutable) 클래스
  • 한번 생성된 String 인스턴스가 갖고 있는 문자열은 읽어올 수만 있고, 변경할 수는 없음
  • 결합횟수가 많을 수록 새로운 String 인스턴스가 생성되어 메모리공간을 차지하게 되므로 문자열 간의 결합이나 추출 등 문자열을 다루는 작업이 많이 필요한 경우에는 StringBuffer 클래스를 사용하는 것이 좋음
  • String 클래스는 앞에 final이 붙어 있으므로 다른 클래스의 조상이 될 수 없음

StringBuffer 클래스

  • String 클래스와는 달리 StringBuffer 클래스는 인스턴스를 생성할 때 지정된 문자열을 변경할 수 있음
  • 내부적으로 문자열 편집을 위한 버퍼(buffer)를 가지고 있으며, StringBuffer 인스턴스를 생성할 때 그 크기를 지정할 수 있음
  • StringBuffer 클래스의 인스턴스를 생성할 때, 생성자 StringBuffer(int length)를 사용해서 StringBuffer 인스턴스에 저장될 문자열의 길이를 고려하여 충분히 여유있는 크기로 지정하는 것이 좋음

StringBuilder 클래스

  • StringBuffer 클래스는 멀티쓰레드에 안전(thread safe)하도록 동기화가 되어 있지만 동기화가 StringBuffer의 성능을 떨어뜨림
  • 멀티쓰레드로 작성된 프로그램이 아닐 경우 쓰레드의 동기화부분만 뺀 StringBuilder를 사용할 경우 동일한 기능으로 성능향상을 할 수 있음

참고자료


Java & SpringBoot로 시작하는 웹 프로그래밍 강의 : #패스트캠퍼스 #내일배움카드 #K디지털크레딧 #바이트디그리 #자바인강

관련글 더보기

댓글 영역