2016. 8. 23. 13:56ㆍProgramming/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 |