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. vue2.0-基于elementui换肤[自定义主题]

    0. 直接上 预览链接 vue2.0-基于elementui换肤[自定义主题] 1. 项目增加主题组件 在项目的src/components下添加skin文件夹 skin文件获取地址 2. 项目增加自 ...

  2. Jhipster 学习(一)jhipster构建项目

    如何安装jhipster 第一步:下载jdk  自己安装的1.8版本  (安装.环境变量配置略) 第二步:1.下载Eclipse (luna版 eclipse-4.4.1) 第三步:下载maven ( ...

  3. generate parentheses(生成括号)

    Given n pairs of parentheses, write a function to generate all combinations of well-formed parenthes ...

  4. java -- 对Map按键排序、按值排序

                             java  -- 对Map按键.按值排序 1.按键排序(sort by key) 直接上代码  ↓ public Map<String, Str ...

  5. Linux 命令行输入

    这几天刚刚接触到Linux,在windows上安装的VMWare虚拟机,Centos7.安装什么都是贾爷和办公室的同事帮忙搞定的. 在虚拟机界面,按快捷键Ctrl+Alt+Enter,可以全屏显示Li ...

  6. 我写的python代码的规则

    1.Python文件的命名: 采用每个单词的首字母大写,不使用下划线 2.Python类的命名: 采用每个单词的首字母大写,不使用下划线 3.Python包名的命名:采用每个单词都是小写,不使用下划线 ...

  7. RocketMQ源码 — 九、 RocketMQ延时消息

    上一节消息重试里面提到了重试的消息可以被延时消费,其实除此之外,用户发送的消息也可以指定延时时间(更准确的说是延时等级),然后在指定延时时间之后投递消息,然后被consumer消费.阿里云的ons还支 ...

  8. 部署SSIS包完成远程数据更新

    ** 温馨提示:如需转载本文,请注明内容出处.** 本文连接:http://www.cnblogs.com/grom/p/9018978.html 笔者需要定期从服务器更新N家客户的远程服务器数据,上 ...

  9. MySQL索引的使用

    1.创建和查看索引 所谓普通索引,就是在创建索引时,不附加任何限制条件(唯一.非空等限制).该类型的索引可以创建在任何数据类型的字段上. (1)创建表时,创建普通索引 语法: 例子: (2)在已经存在 ...

  10. CSS学习笔记三:自定义单选框,复选框,开关

    一点一点学习CCS,这次学习了如何自定义单选框,复选框以及开关. 一.单选框 1.先写好body里面的样式,先写几个框 <body> <div class="radio-1 ...