String 字符串不变性

1、字符串不变性

查看源码发现:
    String是一个final类,且3个成员都是私有的,这就意味着String是不能被继承的,
    这就防止出现:程序员通过继承重写String类的方法的手段来使得String类是“可变的”的情况
    (1)final类 和 final的私有成员
    (2)改变即创建对象的方法
 

2、equals()方法、hashCode()放法的区别



    HashCode被设计用来提高性能。equals()方法与hashCode()方法的区别在于:
    如果两个对象相等(equal),那么他们一定有相同的哈希值。
    如果两个对象的哈希值相同,但他们未必相等(equal)。

    为什么要选31作为乘数呢?
    31是一个不大不小的质数,是作为 hashCode 乘子的优选质数之一。
    31可以被 JVM 优化,31 * i = (i << 5) - i。

发布了50 篇原创文章 · 获赞 25 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/zhaolinxuan1/article/details/89511932
今日推荐