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

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

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

最新文章

  1. size_t 和 size_type的区别
  2. C# 通过反射类动态调用DLL方法
  3. 应用C#和SQLCLR编写SQL Server用户定义函数
  4. C++中typename和class的区别
  5. 1、CC2541蓝牙4.0芯片中级教程——基于OSAL操作系统的运行流程了解+定时器和串口例程了解
  6. javascript 连等赋值问题(这是从SegmentFault转过来的一个问题)
  7. ViewController与outlet绑定
  8. 8个开发必备的PHP功能
  9. URAL1291. Gear-wheels
  10. vs git .ignore
  11. yii2源码学习笔记(十二)
  12. 实现单例模式C++版本
  13. React Starter Kit 中文文档
  14. 理解spread运算符与rest参数
  15. 移动iptv安装三方软件
  16. C# WPF 获取窗体和控件的句柄
  17. margin-left:-20px
  18. C99标准的柔性数组 (Flexible Array)
  19. ubuntu 设置github秘钥
  20. Use Multiple log4net Outputs from One Application

热门文章

  1. Python:什么是进阶,如何进阶?
  2. 微信小程序的拖拽、缩放和旋转手势
  3. 6-4 如何构建xml文档
  4. vue render 渲染函数
  5. Hibernate 初体验
  6. QItemDelegate edit某个控件后把数据写回model
  7. 76. Minimum Window Substring (JAVA)
  8. 68. Text Justification (JAVA)
  9. oracle使用between and边界问题
  10. 数据库备份及SQL脚本导入