扫码关注微信公众号

回复“面试手册”,获取本站PDF版

回复“简历”,获取高质量简历模板

回复“加群”,加入程序员交流群

回复“电子书”,获取程序员类电子书

当前位置: Java > Java基础高频面试题 > 7. Java中String的不可变性

在 Java 8 中,String 内部使用 char 数组存储数据。并且被声明为final,因此它不可被继承。

public final class String implements java.io.Serializable, Comparable<String>, CharSequence {	
	private final char value[];
}

为什么String要设计成不可变的呢(不可变性的好处):

1.可以缓存 hash 值( )

因为 Stringhash值经常被使用,例如String 用做 HashMapkey。不可变的特性可以使得 hash值也不可变, 因此只需要进行一次计算。

2.常量池优化

String 对象创建之后,会在字符串常量池中进行缓存,如果下次创建同样的对象时,会直接返回缓存的引用。

3.线程安全

String 不可变性天生具备线程安全,可以在多个线程中安全地使用。


点击面试手册,获取本站面试手册PDF完整版