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

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

  • 相关阅读:
    javascript基础必学点
    怎样学习jQuery
    新手如何学习jQuery
    如何安装软件
    最近遇到的C++数字和字符串的转换问题
    二叉搜索树
    C++类型的转换
    希尔排序
    C语言里字符串的解析
    remove_if的问题
  • 原文地址:https://www.cnblogs.com/lianliang/p/5320580.html
Copyright © 2011-2022 走看看