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

String 为什么是不可变的

时间:2017-02-16 15:53:13      阅读:413      评论:0      收藏:0      [点我收藏+]

标签:继承   swift   代码   image   string   引用   基本   打印   out   

什么是不可变的:就是说一个对象在创建完成后,不能再改变它的状态即这个对象是不可变的。

不能改变状态的意思是不能改变对象内的成员变量。包括基本类型的值不能改变,引用类型的变量不能指向其他的对象,引用类型指向的对象的状态也不能改变。

例如:

String s = "123";
System.out.println("s = " + s);

s = "456";
System.out.println("s = " + s);

打印结果为:s=123 s=456
表面看上去 s 的值变了 实际上 s只是一个引用。只是引用发生了变化。
也就是说,s只是一个引用,它指向了一个具体的对象,当s=“123”; 这句代码执行过之后,又创建了一个新的对象“456”, 而引用s重新指向了这个心的对象,原来的对象“123”还在内存中存在,并没有改变。
内存结构如下图所示:

技术分享

String的成员变量是private final 的,也就是初始化之后不可改变。

 

更深入就需要去看string 的定义了,string是final类型不可继承 不可改变。

 

String 为什么是不可变的

标签:继承   swift   代码   image   string   引用   基本   打印   out   

原文地址:http://www.cnblogs.com/zjf6666/p/6405943.html

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