关于引用对象的使用的一点小理解
2011-05-12 11:25
351 查看
StringBuilder sbText=new StringBuilder("This var for store strings");//①
StringBuilder sbTextCopy=StringBuilder();//②这里也属于语句②的一部分
new sbTextCopy=sbText;//②
StringBuilder sbTextCopy2=sbText;//③
看了上面的代码,或许你知道我接下来要讲什么?
很多时候,我们都很随意并且随机的写出②、③那样的代码 。今天有人问我两句代码一样吗?初看都差不多,就是完成sbText内容的复制嘛。可细细推敲一下,两者果然不同,下面根据我的理解,对语句②,语句③逐句分析一下:
语句②:同大学教科书一样这里有三个动作----
1、 在堆栈上分配sbTextCopy的引用存储空间(即:StringBuilder sbTextCopy)此空间占4个字节,
2、另一个工作就是,在内存的另一空间分配固定大小(又引用类型自身决定)的数据存储空间,这里是用来存实实在在的对象,而不是引用
3、把sbTextCopy得值设为第2点的存储空间地址
4、把sbTextCopy得值设为sbText存储空间地址(sbTextCopy=sbText)(覆盖了第3步)
语句③: 1、在堆栈上分配sbTextCopy2的引用存储空间。同上第1点
2、把sbTextCopy2得值设为sbText存储空间地址
如同上面分析:语句③较语句②少了:分配实体存储空间的步骤和将sbTextCopy设置为sbText的空间地址。他们的差距就不多说了,当访问频率不是很高的时候,性能是体现不出来的(我也只是猜测,没做过测试)。
下面用图形来表达下我的理解:
StringBuilder sbTextCopy=StringBuilder();//②这里也属于语句②的一部分
new sbTextCopy=sbText;//②
StringBuilder sbTextCopy2=sbText;//③
看了上面的代码,或许你知道我接下来要讲什么?
很多时候,我们都很随意并且随机的写出②、③那样的代码 。今天有人问我两句代码一样吗?初看都差不多,就是完成sbText内容的复制嘛。可细细推敲一下,两者果然不同,下面根据我的理解,对语句②,语句③逐句分析一下:
语句②:同大学教科书一样这里有三个动作----
1、 在堆栈上分配sbTextCopy的引用存储空间(即:StringBuilder sbTextCopy)此空间占4个字节,
2、另一个工作就是,在内存的另一空间分配固定大小(又引用类型自身决定)的数据存储空间,这里是用来存实实在在的对象,而不是引用
3、把sbTextCopy得值设为第2点的存储空间地址
4、把sbTextCopy得值设为sbText存储空间地址(sbTextCopy=sbText)(覆盖了第3步)
语句③: 1、在堆栈上分配sbTextCopy2的引用存储空间。同上第1点
2、把sbTextCopy2得值设为sbText存储空间地址
如同上面分析:语句③较语句②少了:分配实体存储空间的步骤和将sbTextCopy设置为sbText的空间地址。他们的差距就不多说了,当访问频率不是很高的时候,性能是体现不出来的(我也只是猜测,没做过测试)。
下面用图形来表达下我的理解:
![](http://images.cnblogs.com/cnblogs_com/paulxie/Paul.jpg)
相关文章推荐
- 关于父类引用指向子类对象(A a = New B();)的使用,理解向上转型
- 使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?(个人理解)
- 关于C++中在函数中按值返回、临时对象、拷贝构造函数的一点理解
- 关于传值、传引用、传地址的一点小理解
- 关于iOS block循环引用的一点理解
- 关于jsp内置对象Session和Cookie使用的肤浅理解,如何使用Session来统计网站在线人数
- 关于缓存使用的一点理解
- 关于AS3中弱引用的一点理解(转载)
- android之BaseAdapter的使用,加深引用对象理解
- 关于在标准库算法中使用函数对象的一点认识
- java学习心得:关于对象与引用变量的关系的理解
- 关于AS3中弱引用的一点理解
- 关于理解Java中的多态性,父类引用创建子类对象
- 关于AS3中弱引用的一点理解
- 关于Java对象引用的理解
- 关于jsp内置对象Session和Cookie使用的肤浅理解,如何使用Session来统计网站在线人数
- 关于父类引用指向子类对象在javaee中的理解(初学)
- 关于jsp内置对象Session和Cookie使用的肤浅理解,如何使用Session来统计网站在线人数
- 关于C++对象模型的一点理解(2)
- 关于C#对象引用疑惑的理解