String类为什么是final的?
1个回答
展开全部
1.为了实现字符串池;
2.为了线程安全;
3.为了实现String可以创建HashCode不可变性;
1.final修饰类,被final修饰的类不能被继承,即它不能拥有自己的子类,否在会在编译期间报错;
2.final修饰方法,被final修饰的方法不能被重写;
3.final修饰变量,final修饰的变量,无论是类属性、对象属性、形参还是局部变量,都需要进行初始化操作。
查看JDK String的源码
final修饰的String,代表了String的不可继承性,final修饰的char[]代表了被存储的数据不可更改性。但是:虽然final代表了不可变,但仅仅是引用地址不可变,并不代表了数组本身不会变,请看下面图片。
1.只有当字符串是不可变的, 字符串池 才有可能实现。字符串池的实现可以在运行时节约很多heap空间,因为不同的字符串变量都指向池中的同一个字符串。但如果字符串是可变的,那么String interning将不能实现,因为这样的话,如果变量改变了它的值,那么其它指向这个值的变量的值也会一起改变。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询