java equals和tostring
Object类概述
是所有类中的父类,最大的超类,所有的类都继承他。
equals方法

比较2个对象是否相同,其实他是在比较两个对象的地址是否相同,在equals方法中我们用==来判断
但是比较2个地址相同实在没有什么意义,实际开发中我们可能会比较2个对象的属性是否一样,所以我们会在类中重写equals方法再调用
注意:在复写Object中的equals方法时,一定要注意public boolean equals(Object obj)的参数是Object类型,在调用对象的属性时,一定要进行类型转换,在转换之前必须进行类型判断。
比较2个人的年龄是否相同:
package com.orcale.demo01;
public class Person {
private String name; //首先定义人的属性年龄和名字
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//判断是否是同龄人
public boolean equals(Object obj) { //重写equals方法,形参传object类,父类的类型多态的 obj是传进来的一个地址,p2的地址。
if(obj==this){ 判断一下传进来的地址是不是一样,如果是传一个p1,那就是p1==p1,不用再判断了就是ture
return true;
}
if(obj instanceof Person){ //先判断一下是不是传进来的obj是不是Person类,如果不是直接返回false,如果是就进方法体。
//向下转型 //因为是父类,但是我们要判断Person年龄属性,我们要把父类转换到子类,强转子类,然后判断
Person p =(Person)obj;
return this.age == p.age;
}
return false;
} }
}
Person p1 =new Person();
p1.setAge();
Person p2 =new Person();
p2.setAge();
//调用equals()方法,
//如果Person没有重写object子类,那就是调用objeck中的方法
//比较的是两个对象的内存地址,没有意思。Person类如果要比较年龄是否相同
//就要重写父类的equals方法
boolean b = p1.equals(p2); //调用equals方法赋值给b
System.out.println(b);
判断一下汽车的颜色是否一样
package com.orcale.demo01;
public class car {
private String color;
private int lunzi;
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getLunzi() {
return lunzi;
}
public void setLunzi(int lunzi) {
this.lunzi = lunzi;
}
public boolean equals(Object a){
if(this==a){
return true;
}
if(a instanceof car){
car c =(car)a;
return this.color==c.color;
}
return false;
}
}
car c1 =new car();
c1.setColor("红色");
car c2 =new car();
c2.setColor("绿色");
boolean b =c1.equals(c2);
System.out.println(b);
toString方法

toString方法返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值。
由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写它。
package com.orcale.demo01;
public class dog {
private String name;
private String color;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String toString(){ 重写toString方法,返回名字+颜色
return name+"\t"+color;
}
}
dog d1 = new dog();
d1.setColor("白色");
dog d2 =new dog();
d2.setColor("黑色");
String d =d1.toString();
System.out.println(d1);
System.out.println(d2);

java equals和tostring的更多相关文章
- JAVA之旅(九)——Object类,equals,toString,getClass,内部类访问规则,静态内部类,内部类原则,匿名内部类
JAVA之旅(九)--Object类,equals,toString,getClass,内部类访问规则,静态内部类,内部类原则,匿名内部类 天天被一些琐事骚扰,学习还得继续 一.Object类 Obj ...
- Java equals的一个坑
public class StringEqualsObject { public static void main(String[] args) { String name="Tom&quo ...
- 关于覆盖Object中的hashCode, equals和toString
最近在看<Effective Java>,里面看到了关于重载hashCode.equals和toString方法的篇章,顿时觉得视野开拓了不少,而且正结合自己工作.项目中的实例,觉得有必要 ...
- equals hashcode toString 方法的使用
package com.wu.toString; import java.util.Date; import java.util.GregorianCalendar; /** * * @author ...
- Java中的toString()方法
Java中的toString()方法 目录 Java中的toString()方法 1. 对象的toString方法 2. 基本类型的toString方法 3. 数组的toString ...
- at java.lang.AbstractStringBuilder.toString
04-18 14:40:12.615 1210-1210/com.tongyan.lanzhou.rv I/dalvikvm: "main" prio=5 tid=1 RUNNAB ...
- 总结Java equals()和hashCode()的联系
Java equals()和hashCode()的联系 如果两个对象是相等的,那么它们必须有相同的哈希码. 如果两个对象具有相同的哈希码,他们可能相等,可能不相等. 如果两个对象是不同的类的实例 他们 ...
- java.lang.Object类与equals()及toString()的使用
1.Object类是所有Java类的根父类 2.如果在类的声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object类 3.Object类中的功能(属性.方法)就具有通用 ...
- Java 中equals和toString()方法重写
1,equals方法 (1)什么时候需要重写? 如果希望不同内存但相同内容的两个对象equals时返回true,则需要重写equals (2)怎么重写? class A { public int i; ...
随机推荐
- asp.net core选项配置的研究
asp.net-core选项模块是全新,可拓展的框架,其作用在整个.net-core框架中,就像依赖注入一样无处不在,是一个很重要的组件. 其实配置模块与选项模块是紧密相连的,我们可以使用Config ...
- 全面解读Java NIO工作原理(3)
全面解读Java NIO工作原理(3) 2011-12-14 10:31 Rollen Holt Rollen Holt的博客 我要评论(0) 字号:T | T JDK 1.4 中引入的新输入输出 ( ...
- JavaScript 跨域之 POST 实现。
javascript 跨域是一个很常见的问题,其中 jsonp 是一个最常用的手段,但是 jsonp 只支持 get,不支持 post,所以如果想通过 jsonp 来 post 一些数据,就头大了. ...
- ASP.NET Core Api网关Ocelot的中文文档
架构图 入门 不支持 配置 路由 请求聚合 GraphQL 服务发现 微服务ServiceFabric 认证 授权 Websockets 管理 流量控制 缓存 QoS服务质量 转换Headers 转换 ...
- css初始化标签属性--源码
body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, form, fieldset, input, p, blockquote ...
- 论文笔记(1):Deep Learning.
论文笔记1:Deep Learning 2015年,深度学习三位大牛(Yann LeCun,Yoshua Bengio & Geoffrey Hinton),合作在Nature ...
- 并查集(union-find set)与Kruskal算法
并查集 并查集处理的是集合之间的关系,即‘union' , 'find' .在这种数据类型中,N个不同元素被分成若干个组,每组是一个集合,这种集合叫做分离集合.并查集支持查找一个元素所属的集合和两个元 ...
- Selenium2Lib库之界面元素交互常用关键字实战
5.1 Select Radio Button单选按钮关键字 按F5 查看Select Radio Button关键字的说明,如下图: Select Radio Button [ group_name ...
- 解决window.showModalDialog在Firefox无法支持
在网页程序中,有时我们会希望使用者按下按钮后开启一个保持在原窗口前方的子窗口,而在IE中,我们可以使用showModalDialog来达成,语法如下 : vReturnValue = window.s ...
- 由于github仓库中提前建立readme文件,导致git push报错error: failed to push some refs to 'git@github.com:
$ git push -u origin master To git@github.com:xxx/xxx.git ! [rejected] master -> master (fetch fi ...