Java对象的创建与初始化.docx

Java对象的创建与初始化.docx

ID:50826923

大小:41.64 KB

页数:7页

时间:2020-03-15

Java对象的创建与初始化.docx_第1页
Java对象的创建与初始化.docx_第2页
Java对象的创建与初始化.docx_第3页
Java对象的创建与初始化.docx_第4页
Java对象的创建与初始化.docx_第5页
资源描述:

《Java对象的创建与初始化.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Java对象的创建与初始化1.Java中的数据类型Java中有3个数据类型:基本数据类型(在Java中,boolean、byte、short、int、long、char、float、double这八种是基本数据类型)、引用类型和null类型。其中,引用类型包括类类型(含数组)、接口类型。查看详情下列语句声明了一些变量:intk;Aa;//a是A数据类型的对象变量名。Bb1,b2,…,b10000;//假定B是抽象类或接口。Strings;注意:从数据类型与变量的角度看,基本数据类型变量k、类类型变量a和s、抽象类或接口类型变量b(1万个),它们都是变量(标识符)。2.关于句柄(han

2、dle)为了区别引用类型的变量标识符和基本数据类型变量标识符,我们特别的使用Handle来称呼引用类型的变量标识符。上面例子中b1至b10000、a、s都是Handle。Handle直观的看就是手柄、把手,我们采用计算机界常用的中文翻译“句柄”。2.1【Windows编程中的】句柄的含义查看详情句柄是WONDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位图,GDI对象等等。WINDOWS句柄有点象C语言中的文件句柄。从上面的定义中的我们可以看到,句柄是一个标识符,是拿来标识对象或者项目的,它就象我们的姓名一样

3、,每个人都会有一个,不同的人的姓名不一样,但是,也可能有一个名字和你一样的人。从数据类型上来看它只是一个16位的无符号整数。应用程序几乎总是通过调用一个WINDOWS函数来获得一个句柄,之后其他的WINDOWS函数就可以使用该句柄,以引用相应的对象。如果想更透彻一点地认识句柄,我可以告诉大家,句柄是一种指向指针的指针。我们知道,所谓指针是一种内存地址。应用程序启动后,组成这个程序的各对象是驻留在内存的。如果简单地理解,似乎我们只要获知这个内存的首地址,那么就可以随时用这个地址访问对象。但是,如果您真的这样认为,那么您就大错特错了。我们知道,Windows是一个以虚拟内存为基础的操作系

4、统。在这种系统环境下,Windows内存管理器经常在内存中来回移动对象,依此来满足各种应用程序的内存需要。对象被移动意味着它的地址变化了。如果地址总是如此变化,我们该到哪里去找该对象呢?为了解决这个问题,Windows操作系统为各应用程序腾出一些内存储地址,用来专门登记各应用对象在内存中的地址变化,而这个地址(存储单元的位置)本身是不变的。Windows内存管理器在移动对象在内存中的位置后,把对象新的地址告知这个句柄地址来保存。这样我们只需记住这个句柄地址就可以间接地知道对象具体在内存中的哪个位置。这个地址是在对象装载(Load)时由系统分配给的,当系统卸载时(Unload)又释放给

5、系统。句柄地址(稳定)→记载着对象在内存中的地址────→对象在内存中的地址(不稳定)→实际对象2.2Java中句柄的意义查看详情对句柄以前的【Windows编程中的】含义有了深刻的认识,我们可以说Handle是一个我们学习Java时非常需要的术语。它的意义在于区别“对象本身”和对象变量(或者严格点:对象所属的数据类型的变量标识符)。2.3回到1中的变量声明:现在,你应该对下面的注释一目了然。intk,j;//k里面存放的是一个整型数。Aa;//a里面存放地址。Bb1,b2,…,b10000;//b1,…,b10000里面存放地址。Strings;//s里面存放地址。3.关于引用(r

6、eference)查看详情什么是“引用”?“theidentifieryoumanipulateisactuallya‘reference’toanobject”。(ThinkinginJava2e)翻译是:你操纵的标识符实际上是一个对象的“引用”。或者精确些,翻译成:你操作的标识符实际上是指向一个对象的“引用”。显然,原文中reference是一个有方向感的东西。回到Java中来,引用可以想象成对象的身份证号码、对象的ID或者对象的手机号码。当然,更多的说法是,引用是对象在内存中住的房间号码。直观的说,对象的引用是创建对象时的返回值!引用是new表达式的返回值。newA();这里真

7、正创建了一个对象,但我们没有用句柄去持有(hold、拿着、保存)该引用。从微观上看,new表达式完成了对象初始化的任务(三步曲,下文详细分析),整体上看则返回一个引用。再次回到1中的变量声明,再看看下面的注释。Aa;//声明句柄a,但未初始化,所以里面的值为null。Bb1,b2,…,b10000;//声明句柄b1,…,b10000,但未初始化,所以里面的值为null。Strings;//声明句柄s,但未初始化,所以里面的值为null。4.句柄与引用的关系

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。