欢迎来到西安雁塔尚学堂计算机学校官网-专注java/Android培训
尚学堂
 
西安尚学堂
当前位置:西安雁塔尚学堂计算机学校官网
Java中的引用和指针
作者:管理员    来源:西安尚学堂   发布时间:2017-12-20 16:47:29  阅读:423次

java中内存的分配方式有两种,一种是在堆中分配,一种是在堆栈中分配,所有new出来的对象都是在堆中分配的,函数中参数的传递是在栈中分配的。通常情况下堆的内存可以很大,比如32位操作系统中的虚拟内存都可以被堆所使用(当内存紧张的时候甚至硬盘都可以是堆的存储空间),而堆栈的内存分配是有限的。


这和c++中内存分配差不多。java中有几种基本类型如int,float,double,char,byte等,他们不是对象,除此之外一切都是对象,所有的对象都是在堆上分配的。但好像在C#中这些都有封装好的一些方法,应该算是对象。


java中对象数组是什么,和c++类似,是句柄数组或者叫指针数组,里面保存的是每个元素的地址。和c++中不同,java没有操作符重载和拷贝构造函数(如果不了解这些也没有关系),因此当创建对象或者对已经创建的对象赋值时(注意是对象,不是基本类型):Object a=new Object 和Object a=b(b是Object的子类型或者同类型)时,进行的是对象地址的传递并复制。这就是所说的句柄的传递和赋值。


句柄里存储的就是对象的地址,句柄就是指针,只不过是你无法得到的地址,java就是通过这一点巧妙的将指针隐藏起来。当对象作为参数传递到方法中时,传递的就是对象的地址,而行参中保存的是实参地址的副本(这就是最关键的地方,也是值传递,值传递就是将实参的值的副本作为行参)。


 
      西安雁塔尚学堂计算机学校专注IT教育
Copyright 版权所有 西安雁塔尚学堂计算机学校 陕ICP备14007859号
地址:陕西省西安市高新区科技二路西安软件园天泽大厦五楼 邮编:712000 电子邮件:fanchangansxt@163.com
咨询电话:029-62258374
在线咨询