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

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

  • 相关阅读:
    浅谈数论
    浅谈数论
    bzoj2190 [SDOI2008]仪仗队
    bzoj2190 [SDOI2008]仪仗队
    35.QQ大数据模型
    34.函数指针数组和多线程
    33.函数指针相关问题
    32.分配数组的方式
    31.内存分配四大函数以及栈上分配内存
    30.锯齿数组
  • 原文地址:https://www.cnblogs.com/lianliang/p/5320580.html
Copyright © 2011-2022 走看看