工作了一年,觉得自己是时候总结总结,不足的地方要补充补充。一下子没想到别的方法,给自己规划了这么一个任务。每周上班上午早点到公司(8点左右,能早则早),从api基础开始写自己的学习体会。一点点把粗的东西细化,我想这样1-2个月可以夯实我的基础,也希望自己能够坚持。言归正传今天的内容,object。
Object类,是所有类的父类,所有类都隐式的继承了该类。
方法:object方法里有很多native的方法,表示是从本地方法中调用的,跟实际的api无关。这些native方法可以返回任何java类型,甚至包括非基本类型,可以抛出异常。这些native的细节都是由jvm控制,虽然看过一些jvm的内容,但是我还是没有深接触本地方法调用的内容,所以这点现在这//TODO 下。
object的方法包括getClass(),clone(),toString(),equals(),hashcode(),nodify(),nodifyAll(),三个wait()方法。
clone():方法返回的是对象的一个副本。可以注意到在api上就有一行代码:
X.clone()!=X
就是表示副本与原来的对象不是相同的,属于浅复制。这里又可以提到如何深复制的问题,这个以后可以展开写,这里主要还是介绍Object类,就不展开了。
getClass():方法返回对象的运行时类,也就是获得类的一些信息。
X.clone().getClass()==X.getClass()
所以其实就是返回了X的运行时类。
toString():方法返回String类型的字符串,一般都是对象的信息,而大多数情况下toString()都会被重写,所以也就没有多大的意义。
equals():返回是否相等。
源码里object的euqals方法只有一行代码
return (this == obj);
比较两个对象是否指向相同的地址。
hashcode():实际上返回的就是对象存储的物理地址(实际可能并不是)。 它是用哈希算法(哈希算法也称为散列算法,是将数据依特定算法直接指定到一个地址上。),将对象的物理地址散列排在内存中,如果出现地址冲突,就重排(这里又涉及各种可以选择的方式,有时间可以自己研究研究),要保证每个地址只有一个对象。
Java对于eqauls方法和hashCode方法是这样规定的:
1、如果两个对象相同,那么它们的hashCode值一定要相同;
2、如果两个对象的hashCode相同,它们并不一定相同
这里还有一个经典的hashcode冲突的解决方法(equals被重写后,hashcode也要相应的进行重写,否则会有冲突),在这个blog里有文章来描述如何解决的。
nodifty()和nodifyAll():通知线程,和wait()相对,表示唤醒线程,all的话,是对所有处于wait状态的线程进行唤醒,但是一般只能随机(具体怎么实现不知道)唤醒一个。
wait():表示线程暂停处于休眠状态。
分享到:
相关推荐
Java Data Object 学习资料
你是刚咬苹果的新鲜人吗? 不知如何上手也没人教你吗? 这裡有一步步图文并茂的教学,让你也可以轻鬆上手Mac OSX !!
学object-c的路线,可以借鉴一下,有个大体方向才是最好的学习方法
对于初学者是一个好的文档,在你两个小时的时间里就可以对语法有个组基本的了解。
IOS-Object_C经典学习PPT要点
mapobject的中文学习指南,比较经典的教程
该压缩文档包括了Object-C学习的两大经典书籍,《Object-C程序设计》、《Object-C基础教程》。建议先学习第一本书,然后学习第二本书。如果有c/c++的基础,学起来会非常快的。由于本人没什么下载积分,就厚着脸向...
学习动态性能表(八)--v$lock&v$locked_object 学习动态性能表(九)--v$filestat 学习动态性能表(十)--v$session_longops 学习动态性能表(11)--v$latch$v$latch_children 学习动态性能表(12)--v$db_object_cache ...
本书简明概要的介绍的object-c的特点。 例子具有代表性。 目录列表如下: 第 1 章,也就是本章 第 2 章,从 Hello,World!开始 第 3 章,类的声明和定义 第 4 章,继承 第 5 章,Class 类型,选择器 Selector 以及...
Object Pascal 编程指南
这程序应用了MapObject,对Shp文件实现了添加,放大,缩小,鹰眼图,还有DragFeedback等功能。
MO中文学习教程,PDF和DOC格式各一个文件。MO基础不错的资料。
如何学习Object-C语言
利用OpencV实现深度学习中object detection图框标注工具,使用者需要自己配置一下opencv路径。
openerp object features 电子书,openerp学习资料
本人是刚刚开始接触到OBJECT-C ,这是我在第一次学习object-C 是的学习笔记,请大家分享,赐教
适合初级的测试开发 想要了解如何使用selenium和python编写ui自动化 并使用了Pageobject模式,和python测试框架 pytest 其中pageObject+pytest学习是用chatgpt4.0生成的。
Object-C 学习笔记 自己整理的 适合初学者
比较好的MO的中文学习资料。例子是VB的
ios苹果app开发入门,object-c,例子,demo,14个实例 初学者难得的学习实例 【实例截图】 【核心代码】 归档 ├── AirPrinter │ ├── AirPrinter │ │ ├── AirPrinter-Info.plist │ │ ├── AirPrinter...