Java之Object类
0 引言
Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类。Object类是Java中唯一没有父类的类。
其他所有的类,包括标准容器类,比如数组,都继承了Object类中的方法。
1 Object类中的方法
1.1 equals方法
这个方法返回Bool型,用于判断两个引用是否指向同一个对象,其等价于运算符“==”,只有当继承Object的类重写equals方法之后,才可以说equals方法与==不同。
equals方法具有的特点:
自反性(reflexive):任何非空引用x,x.equals(x)返回为true。
对称性(symmetric):任何非空引用x和y,x.equals(y)返回true当且仅当y.equals(x)返回true。
传递性(transitive):任何非空引用x和y,如果x.equals(y)返回true,并且y.equals(z)返回true,那么x.equals(z)返回true。
一致性(consistent):两个非空引用x和y,x.equals(y)的多次调用应该保持一致的结果,(前提条件是在多次比较之间没有修改x和y用于比较的相关信息)。
约定:对于任何非空引用x,x.equals(null)应该返回为false。
1.2 hashCode方法
这个方法返回一个整型值,表示为某个对象的地址。
hashCode的一般性契约:
1. 当equals比较的信息没有被修改,那么同一个对象多次调用hashCode方法返回同一个值
2. 如果equals()判断两个对象相等,那么它们的hashCode()方法应该返回同样的值。
3. 并没有强制要求如果equals()判断两个对象不相等,那么它们的hashCode()方法就应该返回不同的值。即,两个对象用equals()方法比较返回false,它们的hashCode可以相同也可以不同。但是,应该意识到,为两个不相等的对象产生两个不同的hashCode可以改善哈希表的性能。
1.3 toString方法
这个方法返回该对象的字符串表示。当打印引用,如调用System.out.println()时,会自动调用对象的toString()方法。
1.4 wait/notify/notifyAll方法
1. wait方法:当前线程等待,直到在其他线程上调notify/notifyAll方法。调用后,当前线程立即阻塞,直至被唤醒;
2. notify/notifyAll:唤醒在此对象监视器上等待的单个线程/所有线程。调用后,所在线程不会释放所持有的锁,直到所在同步代码中代码执行完毕,才释放锁。
1.5 finalize方法
JVM准备对此对象所占用的内存空间进行垃圾回收前,将被调用。
最新文章
- 今天无意发现jquery的一个以前的误导
- Unity3D教程:茄子童萌會
- boost multi_index
- WPF Touch操作滚动条,Window弹跳
- 使用VirtualBox自带管理工具命令为虚拟磁盘扩展空间
- Android反编译工具的使用-Android Killer
- 解决linux crontab PHP fgetcsv 读取中文数据为空问题
- mac 下修改Hosts文件
- Silverlight动态设置WCF服务Endpoint
- itextsharp去掉PDF加密
- javascript 库
- Hadoop上传文件的报错
- 在阿里云ECS(CentOS6.5)上安装redis
- Python数据分析(二): Numpy技巧 (4/4)
- PHP连接mysql数据库进行增删改查--删除
- and,or
- Spark-SQL之DataFrame操作
- 微信小程序制作家庭记账本之四
- Oracle数据库返回字符类型-1~1的结果处理
- 063——VUE中vue-router之重定向redirct的使用
热门文章
- 洛谷P3165 [CQOI2014]排序机械臂 Splay维护区间最小值
- IOS - Ask for Application Badge permission ios8
- Project Euler 28 Number spiral diagonals
- ftp服务器在linux中安装
- Problem 9
- 原生js,时间日期简单应用。
- 环境搭建Selenium2+Eclipse+Java+TestNG_(一)
- ElasticSearch[v6.2] 在实际项目中的应用
- js/jquery 判断支持touchstart
- CF409C Magnum Opus