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

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

上面的内容是转载的,出处:http://geek.youkuaiyun.com/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)。
本文探讨了Java中值传递与引用传递的概念,并通过具体示例解析了String类型的特性,强调了String作为不可变对象在线程安全方面的优势。

被折叠的 条评论
为什么被折叠?



