黑马程序员 学习笔记之 Object类
来源:互联网 发布:旋转门plc编程 编辑:程序博客网 时间:2024/05/27 00:41
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
Object是比较特殊的类,它是所有类的父类,是Java类中,最高层的类,实质上Java中任何一个类都是它的子类。当创建一个类时,总是在继承,除非某个类已经制定要从其它类继承,否则它就是从java.lang.Object类继承的。
在JDK API 1.6中,是这么介绍Object类的
类 Object
是类层次结构的根类。每个类都使用Object
作为超类。所有对象(包括数组)都实现这个类的方法。
以下是Object类的主要方法:
方法摘要
protected Object
clone()
创建并返回此对象的一个副本。
boolean
equals(Object obj)
指示其他某个对象是否与此对象“相等”。
protected void
finalize()
当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。
Class<?>
getClass()
返回此 Object 的运行时类。
int
hashCode()
返回该对象的哈希码值。
void
notify()
唤醒在此对象监视器上等待的单个线程。
void
notifyAll()
唤醒在此对象监视器上等待的所有线程。
String
toString()
返回该对象的字符串表示。
void
wait()
在其他线程调用此对象的 notify() 方法或notifyAll() 方法前,导致当前线程等待。
void
wait(long timeout)
在其他线程调用此对象的 notify() 方法或notifyAll() 方法,或者超过指定的时间量前,导致当前线程等待。
void
wait(long timeout, int nanos)
在其他线程调用此对象的 notify() 方法或notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量前,导致当前线程等待。
其中equals()是比较常用的,而且子类在使用这个方法时,如果自定义类中也有比较相同的功能,没有必要重新定义。只要沿袭父类中的equals(),建立自己特有比较内容即可。以下是JDK文档中,对这个方法的详细说明
equals
public boolean equals(Object obj)
- 指示其他某个对象是否与此对象“相等”。
equals
方法在非空对象引用上实现相等关系:- 自反性:对于任何非空引用值
x
,x.equals(x)
都应返回true
。 - 对称性:对于任何非空引用值
x
和y
,当且仅当y.equals(x)
返回true
时,x.equals(y)
才应返回true
。 - 传递性:对于任何非空引用值
x
、y
和z
,如果x.equals(y)
返回true
,并且y.equals(z)
返回true
,那么x.equals(z)
应返回true
。 - 一致性:对于任何非空引用值
x
和y
,多次调用 x.equals(y) 始终返回true
或始终返回false
,前提是对象上equals
比较中所用的信息没有被修改。 - 对于任何非空引用值
x
,x.equals(null)
都应返回false
。
Object
类的 equals 方法实现对象上差别可能性最大的相等关系;即,对于任何非空引用值x
和y
,当且仅当x
和y
引用同一个对象时,此方法才返回true
(x == y
具有值true
)。注意:当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。
- 自反性:对于任何非空引用值
- 参数:
obj
- 要与之比较的引用对象。- 返回:
- 如果此对象与 obj 参数相同,则返回
true
;否则返回false
。 - 下面是课程中toString()的代码:
public class ObjectInstance {public String toString() { // 重写toString()方法return "在" + getClass().getName() + "类中重写toString()方法";}public static void main(String[] args) {System.out.println(new ObjectInstance()); // 打印本类对象}}
运行结果:- 下面是使用equals()方法的程序:
class V { // 自定义类V}public class OverWriteEquals {public static void main(String[] args) {String s1 = "123"; // 实例化两个对象,内容相同String s2 = "123";System.out.println(s1.equals(s2)); // 使用equals()方法调用V v1 = new V(); // 实例化两个V类对象V v2 = new V();System.out.println(v1.equals(v2)); // 使用equals()方法比较v1与v2对象}}
运行结果:
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
- 黑马程序员 学习笔记之 Object类
- 黑马程序员:Object类:超父类的学习
- 黑马程序员——IOS学习笔记(Object-c基础)
- 黑马程序员----Object类
- 黑马程序员——Java学习笔记 多态和Object类
- 黑马程序员之C#学习笔记: 抽象类总结
- 黑马程序员_java学习笔记之代理类
- 黑马程序员------java学习笔记之String类
- 黑马程序员---java学习笔记之集合工具类
- 黑马程序员-Java学习笔记之API(其他类)
- 黑马程序员学习笔记之总述
- 黑马程序员学习笔记之环境变量
- 黑马程序员-------C#学习笔记之二
- 黑马程序员之SQL学习笔记
- 黑马程序员之C#学习笔记:arraylist
- “黑马程序员”视频学习笔记之常识
- "黑马程序员"学习笔记之正则表达式
- 黑马程序员_StringBuilder之学习笔记
- 网页乱版怎么办?添加clear属性禁止浮动
- Android JNI(实现自己的JNI_OnLoad函数)
- C++中的C++关键字浅析
- Java 内存管理与垃圾回收
- 中间溢出
- 黑马程序员 学习笔记之 Object类
- 写word
- 什么样的类需要编写拷贝构造函数
- 五笔新手,打开搜狗五笔输入法自动联想功能
- 网页乱版怎么办?可能是CSS的float属性在捣乱
- struts2的ognl表达式二:支持函数使用
- SimpleDateFormat 线程不安全
- 第二周项目-1
- 自定义控件之 按钮