首页 > 编程 > Java > 正文

java中的object类(equals和toString)

2019-11-08 01:36:14
字体:
来源:转载
供稿:网友

这里写图片描述

这里写图片描述 在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


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表