zoukankan      html  css  js  c++  java
  • Java字符串的不可变性

    声明一个字符串引用变量:

    String  s = "abcd";

    s是一个引用变量,指向 堆内存中的字符串常量 "abcd"

    再声明一个字符串引用变量:

    String s2 = s;

    把s变量赋值给s2,那么 s 和 s2 两个引用变量同时指向堆内存中的字符串常量 "abcd"

    改变字符串:

    s = s.concat("ef")

    执行连接方法之后,在对内存中产生了两个常量字符串:"abcd"  "abcdef"

    并且 s 引用变量重新指向了新的字符串常量:"abcdef"

    而 s2 引用还是指向字符串常量:"abcd"

    总结:

    一个字符串被创建之后,就存在对内存中,并且不能被改变,所有操作字符串的方法都不能改变这个字符串本身,而是返回一个新的方法

    如果我们需要一个可以改变的字符串,可以使用StringBuffer或者StringBuilder

    另外,如果创建了很多的字符串常量,对于垃圾回收器来回收这些字符串常量所占用的空间将会非常耗时

  • 相关阅读:
    element-ui 刷新页面不能自动打开对应的菜单
    cookie
    cdn
    为已有文件添加 d.ts 声明
    WiFi 漫游过程
    Wifi 4 way handshake 四次握手
    WiFi association request/response
    WiFi beacon
    WiFi Auth/Deauth帧
    WiFi probe request/response
  • 原文地址:https://www.cnblogs.com/lianliang/p/5320580.html
Copyright © 2011-2022 走看看