10 为什么会有Object类? ==与equals()的区别?
来源:互联网 发布:discuz cms 编辑:程序博客网 时间:2024/05/22 07:36
为什么会有Object类?
Object类正如我们人类的祖先一样,所有的类都继承于Object类。
祖先是开源时代,那个时候祖先还只有一些最基本的能力。
像人类会有基本能力一样,比如说吃饭,睡觉这些功能。
那么Object类有什么呢?
toString, equals, getClass, hashCode, notify,notifyAll, wait, finalize, clone
所以我们看一下祖先Object类中的equals方法。在多态中,多态最大的用处就是参数的传递,而这个参数越大越好,最大的是什么呢?当然就是祖先Object类了。
public boolean equals(Object obj) { return (this == obj); //注意:equals()方法里就是==}
equals方法的起源就是==
如何表现人与人之前是不同的,用代码实现一下:
package com.junc.test;public class EqualsMethod { public static void main(String[] args) { Person me = new Person(); Person other = new Person(); boolean i = me.equals(other); //我是不是跟他一样 System.out.println(i); //输出 false }}class Person extends Object{ //extends Object可以省去,因为默认继承祖先Object}class Object { public boolean equals(Object obj) {//相当于Object obj = new Person(); return (this == obj); }}
既然是继承祖先,那么子类Person就继承Object里的方法equals()。
传入参数就相当于 Object obj = new Person();
因为我与别人是不同的人,所以输出false。
随着不断的变化,我们给equals()赋予新的意义,那就是比较属性,例如比较姓名或性别这些属性。比如很多人叫张三,也有可能不同,这个怎么去比较呢?
package com.junc.test;public class EqualsMethod { public static void main(String[] args) { Person me = new Person("张三", "男"); Person other = new Person("张三", "女"); boolean i = me.equals(other); System.out.println(i); //输出为true }}class Person { private String name; private String sex; public Person(String name, String sex) { super(); this.name = name; this.sex = sex; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public boolean equals(Object obj) { //重写了Object类中的equals()方法 Person p = (Person) obj; return this.name.equals(p.name); //比较两人姓名,返回true }}
==与equals()的区别 :
==是比较运算符,它即可以比较值,也可以比较对象地址。
equals()是方法,如果不重写Object类中的equals()方法,那么它等同于==,即this == obj,如果重写,则equals()方法通常比较的是对象的属性。
0 0
- 10 为什么会有Object类? ==与equals()的区别?
- equals(Object) 与 == 的区别
- equals(Object) 与 == 的区别
- equals(Object) 与 == 的区别
- equals(Object)与==的区别
- Object类中equals与==的区别
- equals(Object) 与 == 的区别(C#技术)
- java equals(Object) 与 == 的区别
- JAVA基础知识回顾(基本数据类型,switch参数,equals与==的区别,Object有哪些公用方法)-1
- Object类中的equals(Object obj) 、String类的equals(Object obj)和 操作符“==”的区别
- equals == 区别和Object类
- object 类 “equals” 方法与 “ == " 之间的差别
- String的equals与Object的equals的区别
- object.equals(null)和object==null有什么区别
- object.equals(null)和object==null有什么区别
- Object类中的equals(Object obj) 和 操作符“==”的区别
- Java中Object.equals与String.equals的区别
- object ==null 与 null ==object 在Java中有区别吗? 为什么有些人用后者?
- java.lang.IllegalStateException: Cannot call sendError() after the response has been committed
- MFC Ribbon Category 实现Tab页切换消息响应
- 使用jxl.jar进行Excel操作将实例属性存入表中
- dll库的实现
- java代理模式与反射机制
- 10 为什么会有Object类? ==与equals()的区别?
- ajax发送请求成功,但是不进入success方法,进入error方法?
- Android网络加载时显示进度条
- solr_4.5.0_03:什么是 core 以及如何创建 core
- red5入门教程
- 关于 802.11 协议
- hiveFailedCollection: ParseException line 1:0 character '<feff>' not supported here
- hdu4634 状压bfs
- 固定列表布局