java后端-- 值传递和引用传递

来源:互联网 发布:软银收购arm 知乎 编辑:程序博客网 时间:2024/05/22 16:06

java后端- -语法基础

值传递和引用传递 

可能很多人对此不屑一顾,心想老子都工作这么长时间了,对这些还不熟悉吗?但实际情况并非这样,JDK中东西全部熟悉了吗?以一个最简单的例子开始,你觉得下图中代码执行完之后fatherList中的元素是什么? 


这是一个最基础的值传递和引用传递的例子,你觉得好简单,已经想跃跃欲试的挑战了,那么请看下面的,StringBuffer很好理解,但是当你执行一遍之后发现是不是和预想中的输出不一样呢?String不是引用类型吗,怎么会这样呢?如果你无法理解,那么请看下String的实现源码,了解下其在内存中分配的实现原理。 


上面的内容是转载的,出处:http://geek.csdn.net/news/detail/239044

其中第二个例子,String字符串那个,我在ide环境中尝试了下,本以为会输出"world---worldworld",但结果却不是这样。查了资料才知道,String是值不可变(immutable)的常量,所以在调用change方法后,s2是不变的。

打开String的源码,类注释中有这么一段话“Strings are constant; their values cannot be changed after they are created. String buffers support mutable strings.Because String objects are immutable they can be shared.”。这句话总结归纳了String的一个最重要的特点:String是值不可变(immutable)的常量,是线程安全的(can be shared)。

总结:String实质是字符数组,两个特点:1、该类不可被继承;2、不可变性(immutable)。

原创粉丝点击