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的更多相关文章

  1. JAVA之旅(九)——Object类,equals,toString,getClass,内部类访问规则,静态内部类,内部类原则,匿名内部类

    JAVA之旅(九)--Object类,equals,toString,getClass,内部类访问规则,静态内部类,内部类原则,匿名内部类 天天被一些琐事骚扰,学习还得继续 一.Object类 Obj ...

  2. Java equals的一个坑

    public class StringEqualsObject { public static void main(String[] args) { String name="Tom&quo ...

  3. 关于覆盖Object中的hashCode, equals和toString

    最近在看<Effective Java>,里面看到了关于重载hashCode.equals和toString方法的篇章,顿时觉得视野开拓了不少,而且正结合自己工作.项目中的实例,觉得有必要 ...

  4. equals hashcode toString 方法的使用

    package com.wu.toString; import java.util.Date; import java.util.GregorianCalendar; /** * * @author ...

  5. Java中的toString()方法

    Java中的toString()方法 目录 Java中的toString()方法 1.    对象的toString方法 2.    基本类型的toString方法 3.    数组的toString ...

  6. 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 ...

  7. 总结Java equals()和hashCode()的联系

    Java equals()和hashCode()的联系 如果两个对象是相等的,那么它们必须有相同的哈希码. 如果两个对象具有相同的哈希码,他们可能相等,可能不相等. 如果两个对象是不同的类的实例 他们 ...

  8. java.lang.Object类与equals()及toString()的使用

    1.Object类是所有Java类的根父类 2.如果在类的声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object类 3.Object类中的功能(属性.方法)就具有通用 ...

  9. Java 中equals和toString()方法重写

    1,equals方法 (1)什么时候需要重写? 如果希望不同内存但相同内容的两个对象equals时返回true,则需要重写equals (2)怎么重写? class A { public int i; ...

随机推荐

  1. UML图中类之间的关系

    类图中的关系大致一下几种 l 泛化 l 关联 l 依赖 l 组合 l 聚合 泛化 泛化是子集和超集的关系,常使用继承和实现来表示: 继承:子类到超类的实线和空心三角箭头表示 实现:子类到超类的虚线和空 ...

  2. 公司内网搭建代理DNS使用内网域名代替ip地址

    企业场景 一般在企业内部,开发.测试以及预生产都会有一套供开发以及测试人员使用的网络环境.运维人员会为每套环境的相关项目配置单独的Tomcat,然后开放一个端口,以 IP+Port 的形式访问.然而随 ...

  3. pyspider的一个诡异问题

    其Start_url两次抓取处理失败以后,其之后的所有抓取行为就不正常,似乎根本没有HTTP访问,我把该爬虫的taskdb清空,该爬虫爬取行为恢复正常.这个问题已提交pyspider官方,静待回答.

  4. Hadoop的多节点集群启动,唯独没有namenode进程?(血淋淋教训,一定拍快照)(四十五)

    前言 大家在搭建hadoop集群时,第一次格式化后,一路要做好快照.别随便动不动缺少什么进程,就来个格式化. 问题描述:启动hadoop时报namenode未初始化:java.io.IOExcepti ...

  5. 大型进销存管理系统源码 家电业 电器类进销存 asp.net C#框架

    系统详细信息点击查看 系统功能模块,系统管理: 部门管理 ,用户管理 ,角色管理 ,菜单管理 ,参数设置 商品管理: 类型管理 ,品牌管理 ,名称管理 ,型号管理 ,仓库管理 ,商家管理 ,单位管理 ...

  6. C#学习笔记 day_three

    C#学习笔记 day three Chapter 3 类型 3.3引用类型 引用类型的变量也成为对象,有六种类型:(1)对象类型 (2)字符串类型 (3)类类型 (4)数组类型 (5)接口类型 (6) ...

  7. Solr(六)Solr索引数据存放到HDFS下

    Solr索引数据存放到HDFS下 一 新建solr core hdfs 方法:http://www.cnblogs.com/Matchman/p/7287385.html 二 修改solrconfig ...

  8. Solr(三)向solr-5.5.4中添加数据

    Solr添加数据 一 首先在创建好的CORE中添加自己需要的Field(可以理解为表的字段) 1 切换到配置Field的文件目录,编辑配置Field的文件 managed-schema cd /usr ...

  9. JS window对象的top、parent、opener含义介绍(转载)

    1.top该变更永远指分割窗口最高层次的浏览器窗口.如果计划从分割窗口的最高层次开始执行命令,就可以用top变量. 2.openeropener用于在window.open的页面引用执行该window ...

  10. Java多线程:线程间通信之Lock

    Java 5 之后,Java在内置关键字sychronized的基础上又增加了一个新的处理锁的方式,Lock类. 由于在Java线程间通信:volatile与sychronized中,我们已经详细的了 ...