我是靠谱客的博主 无语小蜜蜂,最近开发中收集的这篇文章主要介绍String不可变,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

final:首先因为String不可变,如果String不是final,那么就可以有子类继承String类,然后子类覆盖其方法,使得这些方法可以修改字符串,这样就违背了String的不可变性。
不可变原因:1)提高效率:比如一个字符串String s1=“abc”,“abc”被放到常量池里面去了,我再String s2 = “abc”并不会复制字符串“abc”,只会多个引用指向原来那个常量,这样就提高了效率,而这一前提是String不可变,如果尅版,那么多个引用指向同一个字符串常量,我就可以通过一个引用改变字符串,然后其他引用就被影响了
2)安全:String常备用来表示URL,文件路径,如果String可变,或存在安全隐患
3)String不可变,那么他的hashcode就一样,不用每次重新计算。
String不变性的理解
1、String类是被final进行修饰的,不能被继承。
2、再用+号链接字符串的时候会创建新的字符串。
3、String s = new String(“Hello world”);可以创建两个对象也可以创建一个对象。如果静态区中有“Hello world”对象,则堆上和静态区中都需要创建对象。
4、在Java中,通过使用“+”符号来串联字符串的时候,实际上底层会转成通过StringBuilder实例的append()方法来实现。

最后

以上就是无语小蜜蜂为你收集整理的String不可变的全部内容,希望文章能够帮你解决String不可变所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(67)

评论列表共有 0 条评论

立即
投稿
返回
顶部