Java学习笔记之一(深入理解Object类中方法)
来源:互联网 发布:陈翔6点半之网络大电影 编辑:程序博客网 时间:2024/06/05 08:56
在根类Object中包含一下方法:
首先大家要明白回调(callback)方法,所谓回调方法就是程序在运行特定功能时JVM会自动调动这些方法,假设你使用System.out.print(obj)打印出对象obj信息,则运行时JVM会自动调用obj对象的toString()方法,toString()方法就是回调方法。理解回调方法后,下面我们来看这些方法:
[list]clone():clone方法主要用于克隆当前对象,制作本地对象,这肯定需要在所有对象中所拥有,在讲解参数按值传递和按引用传递时再讲解它的用法;[*]equals()、toString()和hashCode():这两个方法主要用于比较两个对象是否相等,查看Object源代码(要多查看源代码便于自己理解)知道,默认的equals()是:,
==只有当两个对象地址相同时才返回true,所以默认的equals()方法根本没什么用,因为对象在内存中的地址(基本类型不同)肯定不同的;所以我们编写类时最好覆盖默认的equals()、hashCode()和toString()方法(查看JDK中的类也大部分覆盖了这些方法),默认的hashCode()返回的值就是对象在内存中的地址,而默认的toString()方法就是打印出对象的地址,toString()和equals()方法内部是通过hashCode()的返回值来实现的,hashCode()是本地(native)方法,所谓本地方法就是使用其他语言(C或C++)编写的,我们可以通过本地接口(JNI)编写本地方法; finalize():这是GC清理对象之前所调用的清理方法,是回调方法,我们可以覆盖这个方法写一些清理的代码,GC会自动扫描没有引用的对象,即对象赋值为null;可以通过调用System.runFinalization()或System.runFinalizersOnExit()强制GC清理该对象前调用finalize()方法,GC有时不会调用对象的finalize()方法(由JVM决定); getClass():返回当前对象的Class类的对象引用,用于取得类名等(方法查看API); notify()、notifyAll()和wait():这三个方法主要用于多线程中,讲解多线程时再具体解释。[/list]
这是我个人对Object中方法的理解,有失误之处望大虾们指出
- clone();
- equals();
- finalize();
- getClass();[align=left][/align]
- notify(),notifyAll();
- hashCode();
- toString();
- wait();
首先大家要明白回调(callback)方法,所谓回调方法就是程序在运行特定功能时JVM会自动调动这些方法,假设你使用System.out.print(obj)打印出对象obj信息,则运行时JVM会自动调用obj对象的toString()方法,toString()方法就是回调方法。理解回调方法后,下面我们来看这些方法:
[list]
- boolean equals(Object obj){
- return this == obj;
- }
==只有当两个对象地址相同时才返回true,所以默认的equals()方法根本没什么用,因为对象在内存中的地址(基本类型不同)肯定不同的;所以我们编写类时最好覆盖默认的equals()、hashCode()和toString()方法(查看JDK中的类也大部分覆盖了这些方法),默认的hashCode()返回的值就是对象在内存中的地址,而默认的toString()方法就是打印出对象的地址,toString()和equals()方法内部是通过hashCode()的返回值来实现的,hashCode()是本地(native)方法,所谓本地方法就是使用其他语言(C或C++)编写的,我们可以通过本地接口(JNI)编写本地方法;
这是我个人对Object中方法的理解,有失误之处望大虾们指出
阅读全文
0 0
- Java学习笔记之一(深入理解Object类中方法)
- Java学习笔记之一(深入理解Object类中方法)
- 深入理解Java虚拟机-学习笔记(1)对象?Object?
- Java Object类中方法理解
- Java Object类中方法理解
- 学习笔记之一:深入理解Activity的生命周期
- java中Object类中的finalize()方法的理解
- 【Java】Java学习笔记之一 ----面向对象(Object-Oriented)
- Java类加载(深入理解Java虚拟机学习笔记)
- 深入理解Java虚拟机笔记---方法调用
- 深入理解Java虚拟机笔记---方法调用
- 深入理解Java虚拟机笔记---方法调用
- Java学习笔记之深入理解接口和抽象类
- 《深入理解java虚拟机》学习笔记一/类加载机制
- 虚拟机类加载机制--《深入理解Java虚拟机》学习笔记
- 【深入理解Java虚拟机学习笔记】虚拟机类加载机制
- 《深入理解Java虚拟机》学习笔记
- 《深入理解java虚拟机》学习笔记一
- mysql 常用语句
- 三次方分解因式重要公式
- Excel 快捷键 (Mac版本)
- java的动态代理机制详解
- windows7下使用GPU训练tensorflow深度学习模型
- Java学习笔记之一(深入理解Object类中方法)
- 【Scikit-Learn 中文文档】模型评估: 量化预测的质量
- .py文件打包成exe可执行文件
- 编辑距离 dp
- Multiple dex files define Landroid/view/ext/BuildConfig
- 本地FTP 使用。
- Java 之 文件读写及性能比较总结
- c++之共用体、结构体占用内存
- erlang wx图形界面学习-4