2019独角兽企业重金招聘Python工程师标准>>>

String类型,类似于常量,对它对象的每一个此操作相当于抛弃了原来的String对象,生成一个新的String对象,让对象指向新String对象地址,例如:

String str1 = new String("abc");//新建一个str对象,比如为其分配地址:12345,即str指向的地址是12345

String str2 = new String("def");

str1 = str1 + str2;

解析:这里其实又新建了一个String对象其值为abcdef,那么此时str指向的地址不再是12345,而是其他地址值,也就是说存储有 “abc”的地址空间已经被舍弃,成为废弃的地址空间,纵然JAVA有完美的垃圾回收机制,程序员不用担心内存溢出,但是当有很多废弃地址空间时,调用 GC来回收,仍然需耗费系统很多资源,从而减低系统性能。

StringBuffer的情形:

StringBuffer str1= new StringBuffer("abc");//假设此时地址认为:12345

String str2 = "def";

str1.append(str2);//此时str1指向的地址空间仍为12345

之所以会出现上面情形,是由StringBuffer的内部实现机制决定的,StringBuffer预先预留一部分地址空间以备扩充(一般是16个字符的预留空间),只有当需要的地址空间超过预留的地址空间时,才会创建一个新对象,这点和String对象一样的。

转载于:https://my.oschina.net/lzwenme/blog/160009

深入String 与StringBuffer详解那个更省资源相关推荐

  1. python string模块template_Python - 定制pattern的string模板(template) 详解

    定制pattern的string模板(template) 详解 本文地址: http://blog.csdn.net/caroline_wendy/article/details/28625179 s ...

  2. xss编码绕过详解(更像是在介绍实体编码和JS编码的解析过程)

    xss编码绕过详解(更像是在介绍实体编码和JS编码的解析过程) 注:本文通过研究各种情况下实体编码和JS编码是否生效,进而总结了哪些情况下能够进行编码后,javascript代码依然能够正常执行. 解 ...

  3. String.format()方法详解

    String.format()方法详解 前言: String.format()作为文本处理工具,为我们提供强大而丰富的字符串格式化功能,这里根据查阅的资料做个学习笔记,整理成如下文章,供后续复习查阅. ...

  4. string头文件详解

    string头文件详解 头文件 #include<string> using namespace std; 访问字符串 string str="abcd"; for(i ...

  5. articulate storyline 导出html5,Articulate Storyline 3详解与交互学习资源制作

    Articulate Storyline 3详解与交互学习资源制作 语音 编辑 锁定 讨论 上传视频 本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! <Articula ...

  6. String类最详解(String、StringBuffer、StringBuilder、正则表达式)表格+代码让你一文读懂!!!

    文章目录 String类 概述 创建字符串 第一种创建方式 第二种创建方式 构造方法 判断功能 获取功能 转换功能 替换功能 正则表达式 StringBuffer类 概述 StringBuffer的方 ...

  7. STL中map和string, vector 用法详解

    1. map 用法详解 std map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成 ...

  8. java中String的用法详解

    在这里先分别对String.StringBuffer.StringBuilder进行解析,在比较三者异同 String String类:代表字符串.Java程序中所有的字符串字面值(如"fd ...

  9. Java中String类intern()详解

    1.背景 在开发过程中很多朋友,由于不会正确使用intern(),导致开发的程序,执行效率比较差.同时最近发现一道非常有意思的关于intern()的面试题,这道面试题还是有不小的难度,相信很多朋友看到 ...

  10. 对于String的用法详解

    目录 一.String的基本用法 二.对于字符串常量池的理解. 三.String类的常见操作. 四.StringBuffer和StringBuilder的使用. 一.String的基本用法 1.1St ...

最新文章

  1. 这是一张很有趣的图片, 通常女性会先看到月亮, 男性会先看到人脸. 如果相反, 表示你体内的异性荷尔蒙偏高哦!...
  2. 交换机复习笔记 广播风暴抑制
  3. 电脑桌面路径多了个计算机名,文件太多,电脑桌面太乱?一个技巧帮你解决!...
  4. linux bash命令_Ultimate Linux命令行指南-Full Bash教程
  5. springboot 接口文档 请求 enum_Spring Boot集成SpringFox 3:生成Swagger接口文档
  6. Linux C简单日志打印代码示例
  7. JAVA中dot的用法_Java 方法
  8. 引用Interop.SQLDMO.dll后的注意事项。
  9. python123输出hello world_2-python学习——hello world
  10. PHP tcp短链接,示例:建立TCP链接
  11. Button,LinkButton,ImageButton,HyperLink使用
  12. spring简易学习笔记四(jdbcTemplate和事务控制)
  13. 白盒分析CC网络验证
  14. 2020计算机考试系统office,2020年3月计算机二级考试,大学生office考试教材,仿真考试系统...
  15. ds18b20驱动程序Linux,ARM-linux嵌入式内核驱动——DS18B20的驱动
  16. 基于单片机的水温液位监测系统设计(#0513)
  17. linux dx游戏,10大免费 Linux 游戏
  18. 搭建个人网盘-owncloud
  19. 已解决Building wheels for collected packages: lxml
  20. MAC双系统U盘安装方法

热门文章

  1. Java引用常量得好处_JAVA常量池的作用
  2. PHP中的数组(拆分与合并)
  3. java代码如何降低重复率_JAVA 如何实现大文本去除重复行
  4. JDK8-u271/u272的jre和jdk/jre的文件有差异
  5. You must install libks to build mod_signalwire
  6. cmake指定输出安装目录
  7. LINUX获取当前用户及信息的命令
  8. 质子和中子数量的一点疑问
  9. 华为、小米手机收不到推送消息的LOG
  10. python获取文件名中两条下划线之间的部分_Python 中的特殊双下划线方法