java学习中,object 对象的使用(toStringequalshashCode)(java 学习中的小记录)
Posted 王可利(Star·星星)
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java学习中,object 对象的使用(toStringequalshashCode)(java 学习中的小记录)相关的知识,希望对你有一定的参考价值。
java学习中,object 对象的使用(java 学习中的小记录)作者:王可利(Star·星星)
object 对象(参考API学习)
重点掌握三个方法:
1.toString 返回该对象的字符串表示。
2.equals(object obj)指示其他某个对象是否与这个对象相等。
3.hashCode() 返回对象的哈希码。
详见代码的注释分析(一个是Person类重写方法,一个是Star类使用方法)
Star类代码:
1 package study; 2 3 public class star { 4 public static void main(String[] args) { 5 6 //创建object对象 7 Object o = new Object(); 8 9 //1.toString 10 String str = o.toString(); 11 System.out.println(str);//java.lang.Object@5cfe174 打印的是类的全名+地址 12 System.out.println(o);//java.lang.Object@5cfe174 13 //println(object o) 内部实现应该是 o.toString 14 //Ctrl + 鼠标左键看源码 ,源码的包是 src压缩包 jdk里面 15 16 //需求:有一个Person类 有两个属性name、age,现在想要在打印Person对象的时候直接输出name和age。 17 Person p = new Person("星星",12); 18 System.out.println(p); 19 //打印上面的类的全名+地址 没有什么意义 20 //一般在类中都会重写toString方法。 21 22 //2.equals :用来比较两个对象 是否是同一个对象,实际上是比较两个对象的地址值。 23 Object o1 = new Object(); 24 Object o2 = new Object(); 25 Object o3 = o1; 26 System.out.println(o1.equals(o2));//false 27 System.out.println(o1.equals(o3));//true 28 29 Person p1 = new Person("小星星", 15); 30 Person p2 = new Person("小星星", 15); 31 //描述的就是一个对象,但是内存中是两个对象。 32 //需求equals来比较,如果我描述的是同一个对象就打印true,否则false 33 //重写equals方法 34 System.out.println(p1.equals(p2)); 35 36 //Api 里面当此方法被重写时,通常 有必要重写hashCode方法,以维护hashCode方法的常规协定,该协定声明相等的对象必须要有相等的哈希码 37 System.out.println(p1.hashCode()); 38 System.out.println(p2.hashCode()); 39 } 40 }
Person类代码:
1 package study; 2 3 import javax.print.attribute.HashAttributeSet; 4 5 public class Person { 6 String name; 7 int age; 8 public Person(String name,int age) { 9 this.name = name; 10 this.age = age; 11 } 12 13 //重写toSting方法 14 @Override 15 public String toString() { 16 // TODO Auto-generated method stub 17 18 return "name = "+name+" age = "+age; 19 } 20 21 22 //重写equals方法 23 @Override 24 public boolean equals(Object obj) { 25 // TODO Auto-generated method stub 26 Person p = null; 27 if (obj instanceof Person) { 28 //多态需要强转,父类不能访问子类特有的属性 29 p =(Person)obj; 30 if (p.name.equals(this.name)) { 31 return true;//名字一样是对的 32 }else{ 33 return false;//名字不一样不是一个对象 34 } 35 }else{ 36 return false;//不是这个类是错的 37 } 38 } 39 //重写哈希码 hashCode 40 @Override 41 public int hashCode() { 42 43 return this.name.hashCode(); 44 } 45 } 46
以上是关于java学习中,object 对象的使用(toStringequalshashCode)(java 学习中的小记录)的主要内容,如果未能解决你的问题,请参考以下文章
Object类日期时间类system类及StringBuilder字符串容器