这篇文章主要介绍了java如何证明字符串是不可变的,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
如何证明字符串是不可变的
字符串不可变的这个事我曾写过两篇文章,写到最后我都要吐了。但是仍然会有一些同学弄不明白,隔段时间就有人私信我,我就不得不把之前的文章放到收藏夹,问的时候我就把链接发给他。
之所以造成这个混乱,有很多因素,比如说,Java 到底是值传递还是引用传递?字符串常量池是个什么玩意?
这次又不得不谈,虽然烦透了,但仍然要证明啊!
publicclassStringImmutabilityTest{publicstaticvoidmain(String[]args){Strings1="沉默王二";Strings2=s1;System.out.println(s1==s2);s1="沉默王三";System.out.println(s1==s2);System.out.println(s2);}}
输出结果如下所示:
truefalse沉默王二
1)String s1 = "沉默王二",Java 在字符串常量池中创建“沉默王二”这串字符的对象,并且把地址引用赋值给 s1
2)String s2 = s1,s2 和 s1 指向了同一个地址引用——常量池中的那个“沉默王二”。
所以,此时 s1 == s2 为 true。
3)s1 = "沉默王三",Java 在字符串常量池中创建“沉默王三”这串字符的对象,并且把地址引用赋值给 s1,但 s2 仍然指向的是“沉默王二”那串字符对象的地址引用。
所以,此时 s1 == s2 为 false,s2 的输出结果为“沉默王二”就证明了字符串是不可变的。
感谢你能够认真阅读完这篇文章,希望小编分享的“java如何证明字符串是不可变的”这篇文章对大家有帮助,同时也希望大家多多支持恰卡编程网,关注恰卡编程网行业资讯频道,更多相关知识等着你来学习!
java fileinputstream中文乱码如何解决
javafileinputstream中文乱码如何解决今天小编给...
java实现点赞功能
java实现简单点赞功能
java实现收藏功能
java输入空行结束问题怎么解决
Java线程中常用的操作有哪些
java输入时怎么通过回车来结束输入
Java数据结构之线索化二叉树怎么实现
Java中的泛型怎么理解
Java字符串编码解码性能怎么提升
用户名
密码
记住登录状态 忘记密码?
邮箱
确认密码
我已阅读并同意 用户协议