`
异步获取爱
  • 浏览: 79959 次
  • 性别: Icon_minigender_1
  • 来自: 大男子主义世界
社区版块
存档分类
最新评论
阅读更多
     工作了一年,觉得自己是时候总结总结,不足的地方要补充补充。一下子没想到别的方法,给自己规划了这么一个任务。每周上班上午早点到公司(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 学习资料

    Java Data Object 学习资料

    MapObject中文学习教程

    这个“MapObject中文学习教程”包含了对MapObject技术的深入介绍,旨在帮助用户掌握这一强大的地图处理工具。教程可能包括了基础概念、接口、方法、属性以及如何在实际项目中应用MapObject的各种技巧。 1. **Map...

    object-c学习路线

    学object-c的路线,可以借鉴一下,有个大体方向才是最好的学习方法

    object-c学习

    对于初学者是一个好的文档,在你两个小时的时间里就可以对语法有个组基本的了解。

    MapObject中文学习指南

    这篇中文学习指南将帮助你深入理解MapObject的核心概念和技术,特别是针对VB(Visual Basic)的编程环境。 1. **MapObject基础**: - MapObject是GIS开发的工具,它提供了一系列接口和类,用于创建地图应用。 - ...

    Object-C 学习文档pdf

    该压缩文档包括了Object-C学习的两大经典书籍,《Object-C程序设计》、《Object-C基础教程》。建议先学习第一本书,然后学习第二本书。如果有c/c++的基础,学起来会非常快的。由于本人没什么下载积分,就厚着脸向...

    Object-Cios苹果app开发入门object-c例子demo14个实例 一般编程问题

    ios苹果app开发入门,object-c,例子,demo,14个实例 初学者难得的学习实例 【实例截图】 【核心代码】 归档 ├── AirPrinter │ ├── AirPrinter │ │ ├── AirPrinter-Info.plist │ │ ├── AirPrinter...

    用C# MapObject编写的一个GIS程序

    在本文中,我们将深入探讨如何使用C#编程语言与Esri的MapObject库结合,来构建一个GIS(地理信息系统)程序。MapObject是Esri公司提供的一个强大的地图开发组件,它允许开发者创建交互式地图应用,支持多种地理数据...

    IOS-Object_C经典学习PPT要点

    在"IOS-Object_C经典学习PPT要点"中,我们可能会涵盖以下关键概念: 1. **类与对象**:Objective-C中的所有事物都是对象,而类是创建对象的蓝图。类定义了对象的属性(实例变量)和行为(方法)。 2. **消息传递**...

    学习 Object-C入门教程

    标题《学习 Object-C入门教程》中所涉及的知识点涵盖了Objective-C语言的基础入门,以及如何使用该语言开发iOS应用程序。Objective-C 是一种面向对象的编程语言,它被广泛用于苹果公司的iOS和macOS操作系统的应用...

    Object-C的学习资料及14个Demo

    本学习资料包提供了丰富的资源,包括理论知识和实践代码示例,帮助你快速上手。 首先,Object-C的基础概念包括类、对象、继承、消息传递等。类是对象的蓝图,定义了对象的属性和方法;对象是类的实例,具备特定的...

    学些动态性能表-word版

    学习动态性能表(八)--v$lock&v$locked_object 学习动态性能表(九)--v$filestat 学习动态性能表(十)--v$session_longops 学习动态性能表(11)--v$latch$v$latch_children 学习动态性能表(12)--v$db_object_cache ...

    ScriptableObject.zip

    学习和理解ScriptableObject的使用,可以帮助开发者更好地组织和管理Unity项目中的数据,提高开发效率和代码可维护性。通过深入实践,你可以掌握如何将ScriptableObject与Unity的其他系统(如Unity的序列化系统、...

    SuperObject增加排序.rar

    通过阅读并理解"SuperObjectToolkit.pas"中的代码,开发者可以学习如何在不牺牲性能的情况下扩展已有库的功能,这对于提升个人编程技能和解决实际问题是非常有价值的。同时,这也是开源精神的体现,鼓励社区成员根据...

    Visual Object Net++

    《Visual Object Net++:探索Petri网建模与仿真》 Visual Object Net++是一款专为初学者...通过深入学习和使用Visual Object Net++,我们可以更好地理解和控制复杂系统的动态行为,为系统设计和优化提供有力的支持。

    object-c学习教程PPT

    Objective-C(Object-C)是苹果公司开发的一种面向对象的编程语言,主要应用于iOS和Mac OS X操作系统。它是C语言的超集,包含了Smalltalk风格的消息传递机制,因此它具有C语言的底层控制能力和Smalltalk的灵活性。在...

    如何学习Object-C语言

    学习Object-C语言是成为Apple平台应用开发者的必备技能之一。本文将深入探讨如何有效地学习和掌握这一强大的编程语言。 首先,理解基础是关键。Object-C在C语言的基础上增加了面向对象的特性,因此熟悉C语言的基本...

    论文OBJECT BANK 代码

    在计算机视觉和机器学习领域,OBJECT BANK是一个重要的概念,它源于斯坦福大学李飞飞教授的研究工作。这项工作旨在改进图像分类和物体识别的性能,通过创建一个对象银行(Object Bank)来存储和处理图像中的视觉信息...

    基于MapObject的GIS程序

    通过深入研究源代码和文档,我们可以学习到MapObject的具体用法和GIS编程的实践技巧。对于GIS开发初学者来说,这是一个很好的学习资源,而对于经验丰富的开发者,它可能是一个实现特定GIS功能的示例。

    superobject1.26

    "SuperObject1.26" 是一个开源的 Delphi 库,主要用来处理 JSON(JavaScript Object Notation)数据格式。...通过深入学习和应用这个库,你可以提升 Delphi 应用程序的数据处理能力,提高开发效率。

Global site tag (gtag.js) - Google Analytics