Object클래스

규칙
1. 모든 클래스의 최고조상. 오직 11개의 메서드만을 가지고 있다.


eqauls(Object obj)  

규칙 ( 반환타입 boolean )
1. 객체 자신(this)과 주어진 객체의 주소를 비교한다.   같으면 true,  다르면 false.
2. 인스턴스 변수(iv)값을  비교하도록 equals()를 오버라이딩 해야한다.

Object equals() 의 원래 메서드

 

eqauls() 메서드 오버라이딩하여 iv(값)을 비교하도록 만듬.

일반 if (v1 == v2 ) 조건식으로 할시 주소값 으로 비교되어버림.

 


hashCode()

규칙 ( identityhashCode() 를 오버라이딩한 것 )
1. 객체의 해시코드를 반환하는 메서드 ( 해시코드 : 정수값 )
2. Object클래스의 hashCode()는 객체의 주소를 int로 변환해서 반환
   ( 객체마다 반환값이 달라서 해시코드를 객체의 지문이라고도함 ) 

3. equals()를 오버라이딩하면, hashCode()도 오버라이딩 해야한다. ★★
      ㄴ equals()의 결과가 true인 두 객체의 해시코드는 같아야 하기 때문

※ native 메서드 : os의 메서드를 마치 자바가 작성한 메서드 인것처럼 사용


identityhashCode()

규칙
1. Object클래스의 hash코드와 동일
2. 객체마다 다른해시코드를 반환 

 


toString(), toString의 오버라이딩

규칙
1. toString() : 객체를 문자열(String)으로 변환하기 위한 메서드  ( 객체 → 문자열로 )

 

 


String 클래스

규칙
1. String클래스 = 데이터( char[] 문자배열 )  +   메서드( 문자열관련 )
2. 내용을 변경할수 없는 불변 클래스 ( immutable )
3. 덧셈 연산자(+)를 이용한 문자열 결합 성능이 떨어짐. ( 계속 새로운 객체를 만들어내야하니까 )
    ㄴ 문자열결합을 자주해야한다면, 내용 변경가능한 StringBuffer를 사용


문자열의 비교 equals

규칙
1.  String str = "abc";                                             // 문자열 리터럴을 이용해서 문자열을 만드는 방법 
    String str = new String("abc"); 의 비교              // new 연산자를 이용해서 문자열을 만드는방법

뭔가 앞뒤가 맞지 않았었다.
위에서 equals()는 주소비교라 햇는데,

String 문자비교시에 equals()를 쓰라하네?? 

결론:
원본 Object클래스의 equals() 메서드는 주소비교가 맞음.

equals()로 문자열 비교가 가능한 이유는,
String객체에서는 equals()메서드를 오버라이딩된 함수를 사용한다.

 


문자열 리터럴

규칙
1. 문자열 리터럴은 프로그램 실행시 자동으로 생성된다. (constatnct pool(상수저장소)에 저장)
2. 같은 내용의 문자열 리터럴은 하나만 만들어진다. ( String객체는 내용변경불가니까 )


빈 문자열 ( "", empty String )

규칙
1. 내용이 없는 문자열. 크기가 0인 char형 배열을 저장하는 문자열
2. 크기가 0인 배열을 생성하는 것은 어느 타입이나 가능
3. 초기화시 유용함. 문자(char)와 문자열(String)의 초기화
String str = ""; // 빈문자열로 초기화
char[] chArr = new char[0];
int[] chArr = new char[0];

 


출처 : 남궁성의 정석코딩, 

https://www.youtube.com/@MasterNKS

출처 : 생활코딩

https://www.youtube.com/watch?v=6X1jsQQtwmo

 

 

+ Recent posts