JAVA中对象成立和初始化历程[Java编程]
本文“JAVA中对象成立和初始化历程[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
解析一下JAVA中对象成立和初始化历程中触及的相关概念问题,java中栈(stack)与堆(heap),对象、引用、句柄的概念.
1.Java中的数据范例
Java中有3个数据范例:
基本数据范例(在Java中,boolean、byte、short、int、long、char、float、double这八种是基本数据范例)
引用范例
null范例
此中,引用范例包含类范例(含数组)、接口范例.
下列语句声明了一些变量:
以下是引用片段:
int k ;
A a; //a是A数据范例的对象变量名.
B b1,b2,…,b10000;// 假定B是抽象类或接口.
String s;
注意:从数据范例与变量的角度看,基本数据范例变量k、类范例变量a和s、抽象类或接口范例变量b(1万个),它们都是变量(标识符).
2.关于句柄(handle)
为了辨别引用范例的变量标识符和基本数据范例变量标识符,我们分外的利用Handle来称谓引用范例的变量标识符.上面例子中b1至b10000、a、s都是Handle.Handle直观的看就是手柄、把手,我们采取计算机界常用的中文翻译“句柄”.
2.1【Windows编程中的】句柄的含义
句柄是WONDOWS用来标识被利用程序所成立或利用的对象的唯一整数,WINDOWS利用各种各样的句柄标识诸如利用程序实例,窗口,掌握,位图,GDI对象等等.WINDOWS句柄有点象C语言中的文件句柄.
从上面的定义中的我们可以看到,句柄是一个标识符,是拿来标识对象大概项目的,它就象我们的姓名一样,每个人城市有一个,差别的人的姓名不一样,但是,也大概有一个名字和你一样的人.从数据范例上来看它只是一个16位的无标记整数.利用程序几近老是通过调用一个WINDOWS函数来得到一个句柄,之后其他的WINDOWS函数便可以利用该句柄,以引用呼应的对象.
假如想更透彻一点地熟习句柄,我可以奉告大家,句柄是一种指向指针的指针.我们知道,所谓指针是一种内存地址.利用程序启动后,构成这个程序的各对象是驻留在内存的.假如简单地理解,仿佛我们只要获知这个内存的首地址,那么便可以随时用这个地址拜候对象.但是,假如您真的这样认为,那么您就大错特错了.我们知道,Windows是一个以虚拟内存为底子的操作系统.在这种系统环境下,Windows内存管理器常常在内存中往复移动对象,依此来满意各种利用程序的内存需求.对象被移动意味着它的地址改变了.假如地址老是如此改变,我们该到那边去找该对象呢?
为了办理这个问题,Windows操作系统为各利用程序腾出一些内存储地址,用来专门登记各利用对象在内存中的地址改变,而这个地址(存储单元的位置)本身是不变的.Windows内存管理器在移动对象在内存中的位置后,把对象新的地址奉告这个句柄地址来保存.这样我们只需记着这个句柄地址便可以间接地知道对象具体在内存中的哪个位置.这个地址是在对象装载(Load)时由系统分配给的,当系统卸载时(Unload)又释放给系统.
句柄地址(安定)→记录着对象在内存中的地址────→对象在内存中的地址(不安定)→实际对象
以上是“JAVA中对象成立和初始化历程[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |