在source中的General toString自动创建
package jicheng;
public class InitialTransport {
public static void main(String[] args) {
// TODO Auto-generated method stub
Transport t=new Transport();
System.out.println("age="+t.age);
Bus bus=new Bus();
System.out.println(bus);//输出的为哈希码
bus.age=6;
//bus.count=8;
//bus.name="bus";
bus.useWhat();
}
}
package jicheng;
public class Transport {
@Override
public String toString() {//用toString方法表示对象的属性
return "Transport [age=" + age + "]";
}
//其他代码已省略
}
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