zoukankan      html  css  js  c++  java
  • Java 中的String 被设计为不可变

    Java 中的String 被设计为不可变对象主要有两方面的原因

    1. 高效 2. 安全

    String Pool

    当一个字符串被创建,另一个相同的内容的字符串创建时,会引用String 缓冲池中已经存在的对象,而不是从新创建一个对象

    下面的代码只会在堆中创建一个String对象

    String string1 = "abcd";
    String string2 = "abcd";

     Hashcode

    String经常被用作HashMap 或者HashSet的key,如果String是不可变的,有利于保证Hash值一直是不变的,我们也不需要一直修改hash值

    有利于其他对象

    有些对象比如HashSet,内部的值是唯一的,如果String可以修改,那么HashSet<String> 就可能违反他的内部元素唯一性

    安全

    String经常作为类中被使用,如果他是可变的,方法在使用某个String时,他被修改了,会有很严重的安全风险

    保证了线程的安全

    String的不可变性使他可以被多个线程共享

  • 相关阅读:
    P1726 上白泽慧音
    P1993 小k的农场
    P1983 车站分级
    P1525 关押罪犯【二分+二分图】
    P1268 树的重量【构造】
    P1113 杂务
    F.Three pahs on a tree
    P1522 牛的旅行
    两个约束下的dp问题
    dp 最大正方形
  • 原文地址:https://www.cnblogs.com/hulian425/p/14553115.html
Copyright © 2011-2022 走看看