问题分析:

首先,看看两段代码的运行结果,两段代码分别是:

第一段代码,关于String.concat()方法的测试:

     public static void main(String[] args)
{
//String stringA = "hello";
String stringA = new String("hello");
testConcat test = new testConcat(); test.change(stringA); System.out.println(stringA);
}
public void change(String stringA)
{
stringA = stringA.concat("world");
}

第二段代码,StringBuffer.append()方法的测试:

     public static void main(String[] args)
{
StringBuffer stringBufferA = new StringBuffer("hello");
testAppend test = new testAppend(); test.change(stringBufferA); System.out.println(stringBufferA);
}
public void change(StringBuffer stringBufferA)
{
stringBufferA.append("World");
}

在实际的运行这两段代码后,得到的结果是:

第一段代码结果:hello

第二段代码结果:helloWorld

由此,可以看出StringBuffer.append()所改变的是源引用的值,不会依赖于方法返回值,而String.concat()在进行字符串拼接的时候,会产生很多的临时对象来保存,最后在拼接结束后,需要把这个结果临时对象进行返回给接收值进行再指向,需要依赖于方法的返回值,执行的效率也会随着字符数的增加而降低,不是真正的引用源

总结:

在所使用的字符串需要经常变更的情况下,使用StringBuffer效率更高,可以使用StringBuffer进行字符串的变更操作,操作完成后再还给String,操作方法:String -> StringBuffer -> 更改字符串 -> String

待续...

最新文章

  1. Laravel错误与日志处理
  2. DIV+CSS圆角边框
  3. zw版【转发·台湾nvp系列例程】HALCON ShapeTrans(Delphi)
  4. 设置mysql远程连接root权限
  5. IE8 textarea 滚动条定位不准解决方法
  6. [5] Zygote
  7. windows平台 culture name 详细列表
  8. chrome console 调试xpath
  9. [TPYBoard-Micropython之会python就能做硬件 7] 学习使用蓝牙模块及舵机
  10. Linux下端口复用(SO_REUSEADDR与SO_REUSEPORT)
  11. JavaScript之事件的绑定与移除
  12. [福大软工] Z班 第12次成绩排行榜
  13. 获取微信的access_tokey,处理json格式的数据
  14. 初学Java必写的小程序。
  15. Longest Word in Dictionary through Deleting - LeetCode
  16. JDK目录结构和文件作用介绍
  17. yarn是什么?为什么会产生yarn,它解决了什么问题?以及yarn的执行流程
  18. 『ACM C++』 PTA 天梯赛练习集L1 | 021-024
  19. Kotlin------类和对象(二)
  20. Oracle 查看表占用的空间大小

热门文章

  1. Android 类似未读短信图标显示数字效果的分析
  2. Android进程的内存管理分析
  3. .Net Web开发中实现剪切板功能
  4. BZOJ 1625: [Usaco2007 Dec]宝石手镯( dp )
  5. jbpmAPI-3
  6. Linux系统之UpStart
  7. jquery简单的插件
  8. opencv-python 学习笔记2:实现目光跟随(又叫人脸跟随)
  9. Mark Russinovich 的博客:Windows Azure 主机更新:原因、时间和方式
  10. 盘点:移动服务 #AzureChat