四. Java继承和多态10. Java Object类
Object 类位于 java.lang 包中,是所有 Java 类的祖先,Java 中的每个类都由它扩展而来。
定义Java类时如果没有显示的指明父类,那么就默认继承了 Object 类。例如:
- public class Demo{
- // ...
- }
实际上是下面代码的简写形式:
- public class Demo extends Object{
- // ...
- }
在Java中,只有基本类型不是对象,例如数值、字符和布尔型的值都不是对象,所有的数组类型,不管是对象数组还是基本类型数组都是继承自 Object 类。
Object 类定义了一些有用的方法,由于是根类,这些方法在其他类中都存在,一般是进行了重载或覆盖,实现了各自的具体功能。
equals() 方法
Object 类中的 equals() 方法用来检测一个对象是否等价于另外一个对象,语法为:
public boolean equals(Object obj)
例如:
- obj1.equals(obj2);
在Java中,数据等价的基本含义是指两个数据的值相等。在通过 equals() 和“==”进行比较的时候,引用类型数据比较的是引用,即内存地址,基本数据类型比较的是值。
注意:
- equals()方法只能比较引用类型,“==”可以比较引用类型及基本类型。
- 当用 equals() 方法进行比较时,对类 File、String、Date 及包装类来说,是比较类型及内容而不考虑引用的是否是同一个实例。
- 用“==”进行比较时,符号两边的数据类型必须一致(可自动转换的数据类型除外),否则编译出错,而用 equals 方法比较的两个数据只要都是引用类型即可。
hashCode() 方法
散列码(hashCode)是按照一定的算法由对象得到的一个数值,散列码没有规律。如果 x 和 y 是不同的对象,x.hashCode() 与 y.hashCode() 基本上不会相同。
hashCode() 方法主要用来在集合中实现快速查找等操作,也可以用于对象的比较。
在 Java 中,对 hashCode 的规定如下:
- 在同一个应用程序执行期间,对同一个对象调用 hashCode www.120xh.cn (),必须返回相同的整数结果——前提是 equals() 所比较的信息都不曾被改动过。至于同一个应用程序在不同执行期所得的调用结果,无需一致。
- 如果两个对象被 equals() 方法视为相等,那么对这两个对象调用 hashCode() 必须获得相同的整数结果。
- 如果两个对象被 equals() 方法视为不相等,那么对这两个对象调用 hashCode() 不必产生不同的整数结果。然而程序员应该意识到,对不同对象产生不同的整数结果,有可能提升hashTable(后面会学到,集合框架中的一个类)的效率。
简单地说:如果两个对象相同,那么它们的 hashCode 值一定要相同;如果两个对象的 hashCode 值相同,它们并不一定相同。在 Java 规范里面规定,一般是覆盖 equals() 方法应该连带覆盖 hashCode() 方法。
toString() 方法
toString() 方法是 Object 类中定义的另一个重要方法,是对象的字符串表现形式,语法为:
public String toString()
返回值是 String 类型,用于描述当前对象的有关信息。Object 类中实现的 toString() 方法是返回当前对象的类型和内存地址信息,但在一些子类(如 String、Date 等)中进行了 重写,也可以根据需要在用户自定义类型中重写 toString() 方法,以返回更适用的信息。
除显式调用对象的 toString() 方法外,在进行 String 与其它类型数据的连接操作时,会自动调用 toString() 方法。
以上几种方法,在Java中是经常用到的,这里仅作简单介绍,让大家对Object类和其他类有所了解,详细说明请参考 Java API 文档。
四. Java继承和多态10. Java Object类的更多相关文章
- 四. Java继承和多态7. Java static关键字
static 修饰符能够与变量.方法一起使用,表示是“静态”的. 静态变量和静态方法能够通过类名来访问,不需要创建一个类的对象来访问该类的静态成员,所以static修饰的成员又称作类变量和类方法.静态 ...
- 四. Java继承和多态8.Java final关键字:阻止继承和多态
在 Java 中,声明类.变量和方法时,可使用关键字 final 来修饰.final 所修饰的数据具有“终态”的特征,表示“最终的”意思.具体规定如下: final 修饰的类不能被继承. final ...
- 四. Java继承和多态2. Java super关键字
super 关键字与 this 类似,this 用来表示当前类的实例,super 用来表示父类. super 可以用在子类中,通过点号(.)来获取父类的成员变量和方法.super 也可以用在子类的子类 ...
- Java 继承和多态
Java 继承和多态 Java 继承 继承的概念 继承是java面向对象编程技术的一块基石,因 ...
- JAVA之旅(九)——Object类,equals,toString,getClass,内部类访问规则,静态内部类,内部类原则,匿名内部类
JAVA之旅(九)--Object类,equals,toString,getClass,内部类访问规则,静态内部类,内部类原则,匿名内部类 天天被一些琐事骚扰,学习还得继续 一.Object类 Obj ...
- Java 继承、多态与类的复用
摘要: 本文结合Java的类的复用对面向对象两大特征继承和多态进行了全面的介绍. 首先,我们介绍了继承的实质和意义,并探讨了继承,组合和代理在类的复用方面的异同.紧接着,我们依据继承引入了多态.介绍了 ...
- Java继承,多态,组合应用
继承: 面向对象的三大特征之一: 是类和类之间的一种拓展关系,是一种从一般到特殊的关系; 格式: sub extends Super, 我们把sub称为子类或者拓展类, 把supe ...
- Java继承和多态实例
我们知道面向对象的三大特性是封装.继承和多态.然而我们有时候总是搞不清楚这些概念.下面对这些概念进行整理, 为以后面向抽象的编程打下坚实的基础. 封装的概念还是很容易理解的.如果你会定义类,那么相信你 ...
- Java继承与多态
感慨一下,到了现在感觉Java里面很多东西都是模模糊糊,不能这样了,一点点解决吧.今天看了继承与多态的一些内容,感觉看得很浅,先写下来,算是巩固,如果后面看到更好的内容,再慢慢加上去. 继承与多态,他 ...
随机推荐
- java初学2
1.数组操作类Arrays与System public static void arraycopy(Object src, int srcPos, Object dest,int destPos,in ...
- Python 黑魔法(持续收录)
Python 黑魔法(持续收录) zip 对矩阵进行转置 a = [[1, 2, 3], [4, 5, 6]] print(list(map(list, zip(*a)))) zip 反转字典 a = ...
- Opencv2.4.13.6安装包
这个资源是Opencv2.4.13.6安装包,包括Windows软件包,Android软件包,IOS软件包,还有opencv的源代码:需要的下载吧. 点击下载
- Spring 笔记(四)AOP
前言 横切关注点 使用 @AspectJ 定义切面. 同时还需要在配置类上应用 @EnableAspectJAutoProxy 注解,启用 AOP 自动代理.(不添加它的话,@AspectJ 注解的类 ...
- 爬虫:Scrapy14 - Telnet 终端(Telnet Console)
Scrapy 提供了内置的 Telnet 终端,以供检查,控制 Scrapy 运行的进程.Telnet 仅仅是一个运行在 Scrapy 进程中的普通 Python 终端.因此你可以在其中做任何是. T ...
- Flex学习笔记
Flex —— Flexible Box 弹性布局 用来为盒子模型提供灵活性 /* 块级元素 */ .box{ display: flex; } /* 行内元素 */ .box{ display: i ...
- mysql备份策略
1.备份的种类 完全备份,就是备份整个数据库对象 事务日志备份, 备份事务日志记录上一次的数据库改变 增量备份,也叫差异备份 文件备份 2.备份方式 逻辑备份, 既备份sql语句,使用mysql自带的 ...
- 【bzoj3438】小M的作物 网络流最小割
原文地址:http://www.cnblogs.com/GXZlegend/p/6801522.html 题目描述 小M在MC里开辟了两块巨大的耕地A和B(你可以认为容量是无穷),现在,小P有n中作物 ...
- Codeforces Round #527 (Div. 3) ABCDEF题解
Codeforces Round #527 (Div. 3) 题解 题目总链接:https://codeforces.com/contest/1092 A. Uniform String 题意: 输入 ...
- Yum只更新安全补丁的方法
当大家想只给RHEL系统更新安全补丁的时候,往往会把其他一些无用的组件给更新下来,现在就给大家说下怎么只更新安全补丁而又不更新其他组件. 1.安装yum插件即可: yum install yum- ...