• 【笔记】在java中String类为什么要设计成final?


    部分内容转自知乎:https://www.zhihu.com/question/31345592

    从自己的理解进行加工,压缩。

    String本质上是一个final类

    public final class String
        implements java.io.Serializable, Comparable<String>, CharSequence {
        /** The value is used for character storage. */
        private final char value[];

    内部是一个 private final char数组,内部的所有方法都没有对这个char[]中的值进行修改。

    所以外部看起来他是不变的。

    不变有很多的好处,例如在想得到一个字符串的追加串。

     //不可变的String
    public static String appendStr(String s) {
        s += "bbb";
        return s;
    }
    
    //可变的StringBuilder
    public static StringBuilder appendSb(StringBuilder sb) {
        return sb.append("bbb");
    }

    用String就可以避免原串的改变,因为后面很可能会用到。

    还有就是在HashMap中会经常用到,这种对key有唯一性约束的数据结构,key一定要是immutable。如果key是mutable那个很可能在你不小心的操作中破坏这种唯一性。

    最后就是,字符串有一个字符串常量池的东西,这可以大大节省内存。然而要实现字符串常量池就基本的操作就是把String设置成immutable。

  • 相关阅读:
    虚拟机CentOS 7 网络连接显示"线缆被拔出"
    sqlplus下删除退格,出现^H^H
    “服务器发送了一个意外的数据包。received:3,expected:20“问题的解决方法
    Oracle 12c创建PDB用户并设置默认表空间
    今日进度
    今日进度
    给王老师的建议
    今日进度
    今日进度
    每周总结
  • 原文地址:https://www.cnblogs.com/liangyongrui/p/7058351.html
Copyright © 2020-2023  润新知