标签:return name equals hashCode toString result
8.Object类
Java对象的root
如果一个对象没有extends,那么它就是从Object继承来的。
toString,equals,hashCode都是Object中的public方法。(当然,每个类要有自己的toString, equals, hashCode,需要重写)
8.1 toString方法:
重写toString:
@Override public String toString() { return 字符串; }
使用toString:如果一个类中定义了该方法,则在调用该类对象时,将会自动调用该类对象的 toString() 方法返回一个字符串,然后使用“System.out.println(对象名)”就可以将返回的字符串内容打印出来。
作用:Implement toString
with a useful human-readable representation of the abstract value。(摘自lab2)
eclipse快速重写:右键-->source-->Generate toString()。
8.2 equals
作用:用来比较两个对象的内容是否相同。
String a = "a"; String b = "a"; System.out.println(a.equals(b)); //true System.out.println(a == b); //false
要比较自己建的类的两个对象是否相同,要重写equals方法。一个典型例子如下(摘自lab3):
@Override public boolean equals(Object obj) { if (this == obj) //obj和this管理的是同一对象 return true; if (obj == null) return false; if (!(obj instanceof Dish)) //obj不是Dish类的对象,也可以使用getclass方法来比较 return false; Dish other = (Dish) obj; //向下造型 if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; if (Double.doubleToLongBits(price) != Double.doubleToLongBits(other.price)) return false; return true; }
eclipse快速重写:右键-->source-->Generate hashCode() and equals()。
8.3 hashCode
摘自lab3的一些重写写法:
@Override public int hashCode() { final int prime = 31; int result = 1; long temp; temp = Double.doubleToLongBits(price); //price是double类 result = prime * result + (int) (temp ^ (temp >>> 32)); result = prime * result + ((title == null) ? 0 : title.hashCode()); //title是自己定义的类 result = prime * result + age; //age是int类 result = prime * result + ((name == null) ? 0 : name.hashCode()); //name是字符串 return result; }
发现和eclipse自动生成的hashCode写法不同,这种写法在累加的过程中不断乘31。
标签:return,name,equals,hashCode,toString,result 来源: https://www.cnblogs.com/fan-hanlin/p/16349507.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。