在source中的General toString自动创建
equal属性 比较的是对象引用的是否是指向同一块内存地址(是否指向的是同一个) 比如如下代码
public class InitailTelphone { public static void main(String[] args) { // TODO Auto-generated method stub Telphone phone=new Telphone(); Telphone phone2=new Telphone(); if(phone.equals(phone2)){ System.out.println("equal"); }else{ System.out.println("not equal"); } }}结果为:not equal
那如果我们指向想比较两个对象的属性是否是相同的呢?
此时就应该改写equals属性了 在Source中的Generate hashCode() and equals()可以自动生成代码,如下:
package com.imooc;public class Telphone { @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + Float.floatToIntBits(cpu); result = prime * result + Float.floatToIntBits(mem); result = prime * result + Float.floatToIntBits(screen); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Telphone other = (Telphone) obj; if (Float.floatToIntBits(cpu) != Float.floatToIntBits(other.cpu)) return false; if (Float.floatToIntBits(mem) != Float.floatToIntBits(other.mem)) return false; if (Float.floatToIntBits(screen) != Float.floatToIntBits(other.screen)) return false; return true; } private float screen; private float cpu; private float mem;}此时运输结果为:equal
新闻热点
疑难解答