String总结

String总结

  1. 内部数据结构为不可变的char[]和一个hash值。
  2. 不可变的类,每一个修改的String的方法都会创建一个全新的String对象。
  3. String重载的‘+’号,使String对象可以相+,内部实现使用StringBuilder对象。
  4. Switch对String的支持(java 8),本质是调用hashCode()和equals()方法保证;
  5. 直接使用字面量(双引号)声明出的String对象的引用会存入字符串常量池(JVM维护的一个特殊内存块,堆内存中的永久代)
  6. 构造器创建的String可使用intern方法,该方法会返回字符串常量池的相同的字符串对象引用,如果没有则先添加到字符串常量池中在返回。
    解释下,字符串常量池的好处就是减少相同内容字符串的创建,节省内存空间。牺牲了CPU计算时间来换空间。CPU计算时间主要用于在字符串常量池中查找是否有内容相同对象的引用。不过其内部实现为哈希数组,像HashTable这种结构,所以计算成本较低

注:另外如:String str = “a” + “b” + “c”; 编译器会优化成 String str = “abc”; 存入字符串常量池中
final String str1 = “a”; String a1 = str1 + “b”; 因为String对象本身不可变,在加上final修饰表示引用变量str1将始终指向“a”这个对象,所以编译器可以十分确定str1就是"a",便可优化a1 = “ab”;也将存入字符串常量池中。

提示:当存在大量相同的字符串时,使用intern可节省大量空间,因为intern方法可以使相同字符串引用指向字符串常量池中相同的一块字符串对象,这样引用原先指向的字符串对象便会失去(强)引用,对象便可被垃圾回收内存空间可以重新利用。
详细参考如下文章
https://tech.meituan.com/2014/03/06/in-depth-understanding-string-intern.html
String类相关方法使用与正则总结
https://blog.csdn.net/qq_29537835/article/details/79754003



、﹗∕
— 〇 -
╱︱ ヽ
但行好事、莫问前程!
>.freerme、我是lilee[https://blog.csdn.net/freerme]
_________________ *_*______
____ ____ ____
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值