为什么在Java中String类是不可变的或最终的?
字符串是不可变的,这意味着我们不能更改对象本身,但是可以更改对对象的引用。将字符串定为最终字符串,以防止其他人扩展它并破坏其不变性。
安全 参数通常在网络连接,数据库连接URL,用户名/密码等中表示为字符串。如果可变,则可以轻松更改这些参数。
同步和并发性使String不可变自动使它们成为线程安全的,从而解决了同步问题。
在编译器优化我们的String对象时进行缓存,似乎如果两个对象具有相同的值(a=“test”,b=“test”),则我们只需要一个字符串对象(对于a和b,这两个对象将指向同一对象)。
类加载String用作类加载的参数。如果可变,则可能导致装入错误的类(因为可变对象更改其状态)。
例:
public class StringImmutableDemo {
public static void main(String[] args) {
String st1 = "Tutorials";
String st2 = "Point";
System.out.println("The hascode of st1 = " + st1.hashCode());
System.out.println("The hascode of st2 = " + st2.hashCode());
st1 = st1 + st2;
System.out.println("The Hashcode after st1 is changed : "+ st1.hashCode());
}
}输出:
The hascode of st1 = -594386763 The hascode of st2 = 77292912 The Hashcode after st1 is changed : 962735579
热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短