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; ...
随机推荐
- Jmeter(二十四)_服务器性能监控
下载插件 1.访问网址http://jmeter-plugins.org/downloads/all/,下载三个文件.其中JMeterPlugins-Standard和JMeterPlugins-Ex ...
- 初识JAVA——流程控制之if语句
if语句的流程控制主要分为3种:1,单分支结构:if(){……}: 2,双分支结构:if(){……}else{……}; 3,多分枝结构:if(){……}else if(){……}…… 其中作为if语句 ...
- ScrollView的顶部下拉和底部上拉回弹效果
要实现ScrollView的回弹效果,需要对其进行触摸事件处理.先来看一下简单的效果: 根据Android的View事件分发处理机制,下面对dispatchTouchEvent进行详细分析: 在加载布 ...
- Git分支创建与合并
分支管理是Git支持多人协作和版本控制的关键,参照廖雪峰对Git的介绍,对真实开发环境中Git的使用结合实践进行梳理. 摘自:廖雪峰的官方网站 在实际开发中,我们应该按照几个基本原则进行分支管理: 首 ...
- Django Push 的一些资料
先来中文的: 主要讲Orbited: http://sunsetsunrising.com/2009/django_comet.html#gsc.tab=0 再来英文的: http://www.rkb ...
- PHP基础(一)--字符串函数大盘点(基础篇)
参考地址http://php.net/manual/zh/ref.strings.php addcslashes - 以 C 语言风格使用反斜线转义字符串中的字符 string addcslas ...
- js判断是否下拉刷新
if(document.body.scrollTop + window.innerHeight>=document.body.clientHeight-10){ this.loadPointsL ...
- vue项目 构建 打包 发布 三部曲
一.vue项目的创建 1.首先第一肯定是要有Node.js及npm这个不多说了2.安装脚手架 此时可以直接浏览-但是现在肯定有很多小白想将他发布到gitHub上并可以浏览,使用vue全家桶制作自己的博 ...
- 解密TTY
本文内容来自The TTY demystified ,讲述了*NIX系统中TTY的历史与工作原理,看完后解决了我很多疑惑,于是做此翻译,与大家分享. 译者:李秋豪 江家伟 审校: V1.0 Sun M ...
- Selenium2Lib库之界面元素交互常用关键字实战
5.1 Select Radio Button单选按钮关键字 按F5 查看Select Radio Button关键字的说明,如下图: Select Radio Button [ group_name ...