# 转载请留言联系

先看一段String类的字符串拼接的代码。

String s = "hello" 会在常量池开辟一个内存空间来存储”hello"。

s += "world"会先在常量池开辟一个内存空间来存储“world"。然后再开辟一个内存空间来存储”helloworld“。

这么以来,001与002就成为了垃圾内存空间了。这么简单的一个操作就产生了两个垃圾内存空间,如果有大量的字符串拼接,将会造成极大的浪费。

  • StringBuilder

StringBuilder类是一个可变的字符序列。

构造方法摘要:

StringBuilder()
          构造一个不带任何字符的字符串生成器,其初始容量为 16 个字符。
StringBuilder(CharSequence seq)
          构造一个字符串生成器,它包含与指定的 CharSequence 相同的字符。
StringBuilder(int capacity)
          构造一个不带任何字符的字符串生成器,其初始容量由 capacity 参数指定。
StringBuilder(String str)
          构造一个字符串生成器,并初始化为指定的字符串内容。

StringBuilder类的几个常用方法:

append(任意类型)  追加到字符串后面

reverse 反转字符串

insert(int offset, 任意类型)  在某个index后插入字符串

toString()  返回String类的对象

  • StringBuilder的作用

上面的例子可以知道String类的字符串拼接会产生大量的垃圾内存空间。但是StringBuilder的字符串拼接是直接在原来的内存空间操作的,即直接在hello这个内存空间把hello拼接为helloworld。

来证明下:

public class StringBuilderTest {public static void main(String[] args){StringBuilder sb = new StringBuilder();StringBuilder sb2 = sb.append("hello");System.out.println(sb);System.out.println(sb2);// 引用类型,判断的是他们的内存地址是否一样System.out.println(sb == sb2);}
}

输出结果是:

hello
hello
true

  • String类与StringBuilder类的相互转换

1.String类转换为StringBuilder类

public class String12 {public static void main(String[] args){String s = "hello";StringBuilder sb = new StringBuilder(s);System.out.println(sb);}
}

2.StringBuilder类转换为String类

public class String12 {public static void main(String[] args){StringBuilder sb = new StringBuilder();sb.append("abc").append("efg");String s = sb.toString();System.out.println(s);}
}

补充:

StringBuilder类和StringBuffer类的区别是:

StringBuffer类是线程安全的,StringBuilder类不是。虽然StringBuffer类比较安全,但是慢。StringBuilder类相反。一般StringBuilder用得多。

转载于:https://www.cnblogs.com/chichung/p/10185560.html

StringBuilder类的作用,以及与String类的相互转换相关推荐

  1. java api 第一个类是_JAVA常用API:String 类的常用方法

    字符串是一个对象,有很多方法可以使用 1. length();返回字符串的长度 String str = "abcd"; int len = str.length(); 2. is ...

  2. java中string类面试题_java中String类的面试题大全含答案

    1.下面程序的运行结果是()(选择一项) String str1="hello"; String str2=new String("hello"); Syste ...

  3. c 语言string类用法,C++中的string类用法简介

    本文主要介绍C++中的string类的常见用法. 1. 概述 string是C++标准库的一个重要的部分,主要用于字符串处理.可以使用输入输出流方式直接进行string操作,也可以通过文件等手段进行s ...

  4. 关于Integer类中parseInt()和valueOf()方法的区别以及int和String类性的转换.以及String类valueOf()方法...

    Integer类中的. 关于parseInt()方法的API文档.  返回的是int类型的 关于valueOf()方法的API文档 返回的是Integer类型的. 关于intValue()方法的API ...

  5. Java语言类的作用,java 语言Class类的作用,怎么使用?

    1,Class类有什么用? Class类的实例表示java应用运行时的类(Class ans enum)或接口(interface and annotation)(每个java类运行时都在JVM里表现 ...

  6. java常用类:1。包装类(以Integer类为例)2.String类 3.StringBuffer

    包装类 把八大基本数据类型封装到一个类中,并提供属性和方法,更方便的操作基本数据类型. 包装类的出现并不是用于取代基本数据类型,也取代不了. 包装类位于java.lang包中. Number 类 Nu ...

  7. java的知识点15——String基础、String类和常量池、String类常用的方法、字符串相等的判断、组合模式

    String基础 1. String类又称作不可变字符序列. 2. String位于java.lang包中,Java程序默认导入java.lang包下的所有类. 3. Java字符串就是Unicode ...

  8. c++ string类_C++|细说STL string类概貌及底层细节

    C语言中的字符串称为C风格字符串,是一个以'0'结尾的字符数组,string.h库只提供了有限.不甚安全的字符串操作函数.char str[]只能定义编译期确定大小的字符串,而保存在堆内存的动态字符数 ...

  9. C#笔记2__Char类、String类、StringBuilder类 / 正则表达式 /

    Char类 String类 字符串的格式化:String类的Format方法 StringBuilder类 以上:百度 or 查手册..... 转载于:https://www.cnblogs.com/ ...

  10. 【JAVA SE】第十章 String类、StringBuffer类和StringBuilder类

    第十章 String类.StringBuffer类和StringBuilder类 文章目录 第十章 String类.StringBuffer类和StringBuilder类 一.String类 1.创 ...

最新文章

  1. elasticsearch index 之 put mapping
  2. vb字符串在内存中的分布?
  3. hdu 5036 Explosion bitset优化floyd
  4. 【opencv学习】【图像的阈值处理】
  5. servlet串行拦截器实现例子
  6. P1959 遗址_NOI导刊2009普及(6)
  7. kindEditor文本编辑器
  8. 845. 数组中的最长山脉
  9. asynDBCenter(修改)
  10. 航空公司客户价值数据的分析
  11. jcp jsr_“ IBM和Red Hat *不应*都保留其JCP EC席位”
  12. 关于hadoop运行成功但是无法链接web页面
  13. 抛物型偏微分方程的Crank-Nicolson 方法; Richardson 外推法;紧差分法
  14. 带你一文搞懂VMware Workstation的三种网络模式
  15. C++基础之 函数(function)
  16. linux命令字典式总结(按用途分类)
  17. 网络基础(四) — QUIC协议
  18. Python根据字体的大小获取字符串像素长度并以表格的形式在图片中显示
  19. VERTU全球首款WEB3手机METAVERTU伦敦亮相
  20. AU插件安装 - FabFilter、RX

热门文章

  1. HDOJ 1671 HDU 1671 Phone List ACM 1671 IN HDU
  2. R导出可编辑图到ppt:结合使用ggplot2以及officer
  3. OpenCV 学习笔记 04 深度估计与分割——GrabCut算法与分水岭算法
  4. 使用本机IP调试web项目
  5. npm依赖管理:冗余,依赖树
  6. json处理为字符串,主要函数,dumps和loads
  7. Hibernate:Hibernate缓存策略详解
  8. 英语----情态动词---半情态动词
  9. iOS 面试题集合
  10. [我给Unity官方视频教程做中文字幕]beginner Graphics – Lessons系列之网格渲染器和过滤器Mesh renderers and filters...