码迷,mamicode.com
首页 > 其他好文 > 详细

转 String的不变性 immutable

时间:2018-08-04 18:59:59      阅读:103      评论:0      收藏:0      [点我收藏+]

标签:因此   应该   imm   new   java   system   div   ring   https   

转 https://blog.csdn.net/limm33/article/details/54962259




 

我们经常在Java里面提到String的不变性,下面就来说一下对于String的不变性的理解:

可以参考以下程序:

 

String str = "Hello";
System.out.println(str);//输出为Hello
str.concat("World");//该方法是在原来的变量后面添加一个字符串然后变成新的字符串
System.out.println(str);//输出为Hello
str=str.concat("World");
System.out.println(str);//输出为HelloWorld

通过以上程序能更好的帮助我们理解String的不变性,不变性是什么呢?就是指引用的对象实例的是不可以改变的,但是我们可以改变引用的地址,改变地址改变值。


 常量池概念:

在Java虚拟机的整个体系里面,我们加载类文件,分别存放到不同的单元,占用大部分内存空间的是常量池,大约能占到60%,为了节省内存,JVM专门用一片特殊的存储区域存储String,作为String ,面对String常量,会检查String常量池中是否存在此常量,如果存在的话,直接进行引用,避浪费多余的内存空间,因此必须确保这个具体的常量不能变,这就是我们经常讲的String的不变性。

我们可以联想到其它方式,还有其它使用的技术:

String newStr=“java”;//这个应该是放在String的常量池中的常量。
 
String newStrObj=new String("java");//这个放在常规的内存中。

 

转 String的不变性 immutable

标签:因此   应该   imm   new   java   system   div   ring   https   

原文地址:https://www.cnblogs.com/tabCtrlShift/p/9419212.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!