🧂 Object 클래스란?
- 모든 클래스의 최고 조상. 오직 11개의 메서드만을 가짐.(iv, cv 없음)
- notify(), wait() 등은 쓰레드와 관련된 메서드.
- equals(), hashCode(), toString()은 적절히 오버라이딩해야함.
(출처. 책: 자바의 정석 450p)
🧂 equals(Object obj)
- 객체 자신(this)과 주어진 객체(obj)를 비교한다.
(반환타입 boolean) 같으면 true, 다르면 false- Object클래스의 equals()는 객체의 주소를 비교(참조변수 값 비교)
- 인스턴스 변수(iv)의 값을 비교하도록 equals()를 오버라이딩해야함.
class Value { int value; . Value(int value){ this.value = value; } } . public class EqualsEx { . public static void main(String[] args) { Value v1 = new Value(10); Value v2 = new Value(10); . // Object클래스의 equals()메서드는 객체의 주소를 비교하는 기능제공 if(v1.equals(v2)) { System.out.println("v1과 v2는 같습니다."); }else { System.out.println("v1과 v2는 다릅니다."); } . v2 = v1; // 주소복사 . if(v1.equals(v2)) { System.out.println("v1과 v2는 같습니다."); }else { System.out.println("v1과 v2는 다릅니다."); } } } /* 실행결과 v1과 v2는 다릅니다. v1과 v2는 같습니다. */
🧂 hashCode()
- 객체의 지문
- 객체의 해시코드(hash code)를 반환하는 메서드
- Object클래스의 hashCode()는 객체의 주소를 int로 변환해서 반환
- equals()를 오버라이딩하면, hashCode()도 오버라이딩 해야함.
✨equals()의 결과가 true인 두 객체의 해시코드는 같아야하기때문🧂 toString()
- 객체를 문자열(String)으로 변환하기 위한 메서드
🧂 String클래스란?
- 문자열을 다루기 위한 클래스
- String클래스 = 데이터(char[ ]) + 메서드(문자열 관련)
- 내용을 변경할 수 없는 불변(immutable)클래스
String a = "a"; String b = "b"; a = a + b ; // "ab"
- 덧셈 연산자(+)를 이용한 문자열 결합은 성능이 떨어짐.
->문자열의 결합이나 변경이 잦다면, 내용을 변경가능한 StringBuffer(내용변경가능)를 사용
🧂 문자열의 비교
- String str = "abc"(문자열리터럴) 와 String str = new String("abc")의 비교
(출처- 책 자바의 정석)
String str1 = "abc"; // 문자열 리터럴 "abc"의 주소가 str1에 저장됨 String str2= "abc"; // 문자열 리터럴 "abc"의 주소가 str1에 저장됨 String str3 = new String("abc"); // 새로운 String인스턴스를 생성 String str4= new String("abc"); // 새로운 String인스턴스를 생성
🧂 문자열 리터럴
- 문자열 리터럴은 프로그램 실행시 자동으로 생성된다.(constant pool에 저장)
- 같은 내용의 문자열 리터럴은 하나만 만들어진다.
String str1 = "aaa"; String str2 = "aaa"; String str3 = "aaa"; String str4 = "bbb";
🧂 빈 문자열("", empty String)
- 내용이 없는 문자열. 크기가 0인 char형 배열을 저장하는 문자열
String str = ""; // str을 빈문자열로 초기화- 크기가 0인 배열을 생성하는 것은 어느 타입이나 가능
char[ ] chArr = new char[0]; // 길이가 0인 char배열 int[ ] iArr = {} ; // 길이가 0인 int배열
- 문자(char)와 문자열(String)의 초기화
String s = "" ; // 빈 문자열로 초기화 char c = ' ' ; // 공백으로 초기화
🧂 참고
책 : 자바의 정석