JAVA中的值传递和引用传递,String的值传递特性
来源:互联网 发布:信捷xc3编程电缆接线 编辑:程序博客网 时间:2024/05/22 09:21
String是在java编程中用的最多的数据类型,因此也有很多与其他数据类型不同的性质。
创建字符串可以用的命令有:
String str="abc";//创建str字符串,内容为abc。
String str=new String("abc");//创建str字符串,内容为abc。
虽然两种方法都可以创建,但是却有很大的不同。
分析一下这两句命令:
String str="abc";
这句程序的内存分配情况为:
首先在栈内存中为str开辟空间,然后在堆内存中开辟匿名字符串abc的空间,再由str指向abc的空间。这种方法很简单,也很方便,而且在堆内存中也只开辟了一块内容为abc的空间,没有多余的空间。
如果写语句:String str1="abc";创建一个str1字符串,内容同样为abc,那么内存空间的开辟和指向情况为:
可以看到str和str1指向同一块堆内存,这是为什么呢?因为String用的最多,很特殊,因为对于String来讲使用直接赋值的方式会在字符串池中保存内容。如果之后在声明字符串的时候发现内容一样,则不会重新开辟空间,而是从内存池中取出数据继续使用。
String str=new String("abc");
这句程序的内存分配情况为:
这句程序会在堆内存中开辟一块内容为abc的匿名空间,然后再new一块空间,赋值abc,并有str指向这里,这时候匿名空间由于没有栈指向成为垃圾,然后被回收。
可以发现,程序开辟了两个空间,与前一个相比慢多了。所以在开发中绝对不能使用关键字new实例化String类。而且,如果直接使用赋值的方式也可以减少堆内存的开销。
转自:http://blog.csdn.net/zhujianli1314/article/details/39135325
- JAVA中的值传递和引用传递,String的值传递特性
- JAVA中的值传递和引用传递,String的值传递特性
- JAVA中的值传递和引用传递,String的值传递特性
- Java的方法的参数传递,值传递和引用传递还有String字符串传递
- java中的“值传递”和“引用传递”
- java中的值传递和引用传递
- Java中的值传递和引用传递
- java中的值传递和引用传递
- java中的值传递和引用传递
- java中的值传递和引用传递
- Java中的值传递和引用传递
- java中的值传递和引用传递
- java中的值传递和引用传递
- java中的值传递和引用传递
- java中的值传递和引用传递
- java中的值传递和引用传递
- java中的值传递和引用传递
- java中的值传递和引用传递
- 如果你报createSQLQuery is not valid without active transaction,请看这里
- 更改Android Studio的默认布局
- (一)K近邻算法及MNIST应用
- 关于使用corebench的学习笔记
- JFileChooser简单入门
- JAVA中的值传递和引用传递,String的值传递特性
- AR——增强现实技术
- 奇葩程序员遇上了奇葩公司
- 程序员面试IT公司的33个小贴士
- scala操作符
- 预告:教机器人学中文:解析中文分词与其应用 | 硬创公开课
- MySQL数据库的基本操作1
- 小米之外,这些公司也同样在FDDB中辉煌过
- 谷歌开发Fuchsia,PC和移动操作系统真的要融合了?