Day 11(8/15) Object, hashCode

2016. 8. 23. 13:56Programming/Java

오늘 배운 내용

1) Object 클래스의 개념 + toString()

2) hashCode 개념


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import java.lang.Object;
 
class ObjectDemo{
     public void a(Object o){
          System.out.println(o.toString()); //System.out.println(o);와 동일
     }//a end
}//class end
 
class ToStringDemo1{
     @Override
     public String toString() {
          return "ToStringDemo1 호출";
     }//toString end
}//class end
 
class ToStringDemo2{
     public String toString(){
          return "ToStringDemo2 호출"+super.toString();
     }
}
 
public class L01Object extends Object{ //모든 클래스가 Object 클래스를 상속하고 있음(생략됨)
     public static void main(String[] args){
      //ToStringDemo1, 2의 toString을 ObjectDemo.a로 호출
         ObjectDemo demo = new ObjectDemo();
         demo.a(new ToStringDemo1());
         demo.a(new ToStringDemo2());
  
   }//main end
}//class end
cs



/*
 * java.lang.Object class
 * 모든 클래스가 상속 받는 클래스다(모든 클래스의 조상이다)
 * 모든 객체의 데이터 타입으로 지정 가능하다(이때는 Object 클래스의 자원만 사용가능)
 * 상속, 재정의, 객체, 데이터 타입 개념 이해
 */


//동물 쥐 클래스 만든다
//쥐 클래스가 하는 가장 큰 일: "찍찍"하고 우는 것
//Mouse 객체를 생성할 때마다 toString()이 호출되도록 하자.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Mouse{
     String squick;
     public Mouse(String squick){//Mouse => 생성자
         this.squick = squick;
 }
     @Override
     public String toString(){
          return "쥐가"+squick;
     }
}
 
public class L02ToString {
     public static void main(String[] args) {
          System.out.println(new Mouse("찍찍"));
     }//main
}//class
cs



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class HashCodeDemo{
     String name;
     HashCodeDemo(String name){
          this.name=name;
 }
     @Override
     public int hashCode() {
          return super.hashCode();
 }
//재정의를 권장하지 않는다. 16진수로 반환
 
public class L03HashCode {
     public void main(String[] args){
          HashCodeDemo a = new HashCodeDemo("A");
          HashCodeDemo b = new HashCodeDemo("A");
          HashCodeDemo c = new HashCodeDemo("A");
              System.out.println(a==b); //==: 참조하는 위치가 같은지 비교
              System.out.println(b==c);
              System.out.println(a.hashCode());
              System.out.println(b.hashCode());
              System.out.println(c.hashCode());
  
         }
     }//main}
}//class
cs



/*hashCode() 객체가 가지는 고유한 싸인
*
* com.javalesson.ch10Object.L03HashCode 클래스를 유일하게 만들어주는 경로
* 패키지명 = 고유한 이름, 패키지 내부에서 같은 이름의 클래스를 가질 수 없다.
* new L03HashCode(), new L03HashCode() 두 객체가 다름을 증명하는 싸인 -> hashCode()
*
* 인스턴스 객체.hashCode()는 객체의 고유 싸인을 가진다.
* 하지만 String은 아스키 코드 값들을 가진다. => 모든 객체가 고유한 hashCode 값을 가지는 것은 아니다.
* 기본 데이터타입의 랩퍼 클래스를 제외하고(재정의했기 때문에) 모든 클래스의 객체는 고유한 hashCode 값을 가진다
* Object.hashCode() 객체의 고유값을 부여한다.
*/



'Programming > Java' 카테고리의 다른 글

Day 13(8/17) public, private  (0) 2016.08.23
Day 12(8/16) Equals  (0) 2016.08.23
Day 10(8/12) Abstract, Interface  (0) 2016.08.16
Day 9(8/11) extends, @Override, frame  (0) 2016.08.16
Day 8(8/10) Review (Constructor, Instance)  (0) 2016.08.16