首页  >  文章  >  Java  >  java如何证明字符串是不可变的

java如何证明字符串是不可变的

王林
王林转载
2023-04-29 08:46:121413浏览

如何证明字符串是不可变的

字符串不可变的这个事我曾写过两篇文章,写到最后我都要吐了。但是仍然会有一些同学弄不明白,隔段时间就有人私信我,我就不得不把之前的文章放到收藏夹,问的时候我就把链接发给他。

之所以造成这个混乱,有很多因素,比如说,Java 到底是值传递还是引用传递?字符串常量池是个什么玩意?

这次又不得不谈,虽然烦透了,但仍然要证明啊!

public class StringImmutabilityTest {     public static void main(String[] args) {         String s1 = "沉默王二";         String s2 = s1;         System.out.println(s1 == s2);          s1 = "沉默王三";         System.out.println(s1 == s2);          System.out.println(s2);     } }

输出结果如下所示:

true false 沉默王二

1)String s1 = "沉默王二",Java 在字符串常量池中创建“沉默王二”这串字符的对象,并且把地址引用赋值给 s1

2)String s2 = s1,s2 和 s1 指向了同一个地址引用——常量池中的那个“沉默王二”。

所以,此时 s1 == s2 为 true。

3)s1 = "沉默王三",Java 在字符串常量池中创建“沉默王三”这串字符的对象,并且把地址引用赋值给 s1,但 s2  仍然指向的是“沉默王二”那串字符对象的地址引用。

所以,此时 s1 == s2 为 false,s2 的输出结果为“沉默王二”就证明了字符串是不可变的。

以上是java如何证明字符串是不可变的的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文转载于:yisu.com。如有侵权,请联系admin@php.cn删除