Android 开发之官方文档翻译及全面解析系列筹备结束,今天开始出,双周更,欢迎大家交流学习点评。
所有Android开发的小伙伴基本都知道,Android底层是由C/C++编写,应用层是由Java语言编写而成的。当然,大多数的开发都停留在应用层,所以今天从最基础的开始翻译开始。所有类的基类——没错 Object。关于Object就不做过多介绍了,接来下就是翻译内容。如有不适,请自备纸巾。
java.lang.Object
extends Object implements Drawable.Callback, KeyEvent.Callback, AccessibilityEventSource
// 简单说一下java.lang,java.lang主要是提供利用Java编程语言进行程序设计的基础类。最重要的类是Object(它是类层次结构的根)和 Class(它的实例表示正在运行的应用程序中的类)。其他就是实现绘制,事件监听的一些回调,不多说。当然,官方文档也说了,你可以参考Class类。
Summary(语法)
Public constructors(构造方法)
Object();
public methods(公共方法)
返回值 | 方法 |
---|---|
boolean | equals(Object obg) 用来判读两个Objects是否和另外一个相等。 |
final Class | getClass()返回该对象的运行时类 |
int | hashCode()返回hashCode值,什么是hashCode?自行百度 |
final void | notify() 唤醒在这个对象的监视器上等待的一个线程。用来唤醒线程用的 |
final void | notifyAll()同上,唤醒所有等待线程。 |
String | toString()返回对象的字符串表示。 |
final void | wait(long millis,int nanos)对应上面的notify和notifyAll方法,用来使当前线程暂停,使当前线程处于等待状态。millis是毫秒,最大等待事件,nanos参数纳秒的意思。 |
final void | wait(long millis):同上,只是参数不同 |
final void | wait():wait(0,0)和wait(0)和wait()效果差不多,同上。 |
Protected methods(受保护的方法)
返回值 | 方法 |
---|---|
Object | clone()复制一个对象 |
void | finalize():垃圾回收器准备回收该对象时,会先调用该对象的finalize()方法。finalize()方法主要用来回收特殊渠道申请内存。当然,做Android开发基本不会用到,大家也不用去深入了解。 |
简单代码说明:
class ObJectDemo extends Object {
private int id;
public ObJectDemo(int id) {
this.id = id;
System.out.println("ObJectDemo Object " + id + "is created");
}
protected void finalize() throws java.lang.Throwable {
super.finalize();
System.out.println("ObJectDemo Object " + id + "is disposed");
}
}
当ObJectDemo被垃圾回收站回收的时候,就会先调用finalize()方法。
总结:
Object类的方法很少,但作用却不小,当然,值得稍微注意下的是,equals方法的使用。
这里也做下equals方法的简单说明:
- 在默认没有重新equals方法的情况下:Object的equals方法主要用于判断对象的内存地址引用是不是同一个地址(是不是同一个对象)。
- 如果重写的equals方法,需要根据具体的代码来确定equals方法的作用。覆盖后一般都是通过对象的内容是否相等来判断对象是否相等。
简单小总结:
1. equals方法用于比较对象的内容是否相等(覆盖以后)
2. hashcode方法只有在集合中用到
3. 当覆盖了equals方法时,比较对象是否相等将通过覆盖后的equals方法进行比较(判断对象的内容是否相等)。
4. 将对象放入到集合中时,首先判断要放入对象的hashcode值与集合中的任意一个元素的hashcode值是否相等,如果不相等直接将该对象放入集合中。如果hashcode值相等,然后再通过equals方法判断要放入对象与集合中的任意一个对象是否相等,如果equals判断不相等,直接将该元素放入到集合中,否则不放入。