StringBuilder类的作用,以及与String类的相互转换
# 转载请留言联系
先看一段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类的相互转换相关推荐
- java api 第一个类是_JAVA常用API:String 类的常用方法
字符串是一个对象,有很多方法可以使用 1. length();返回字符串的长度 String str = "abcd"; int len = str.length(); 2. is ...
- java中string类面试题_java中String类的面试题大全含答案
1.下面程序的运行结果是()(选择一项) String str1="hello"; String str2=new String("hello"); Syste ...
- c 语言string类用法,C++中的string类用法简介
本文主要介绍C++中的string类的常见用法. 1. 概述 string是C++标准库的一个重要的部分,主要用于字符串处理.可以使用输入输出流方式直接进行string操作,也可以通过文件等手段进行s ...
- 关于Integer类中parseInt()和valueOf()方法的区别以及int和String类性的转换.以及String类valueOf()方法...
Integer类中的. 关于parseInt()方法的API文档. 返回的是int类型的 关于valueOf()方法的API文档 返回的是Integer类型的. 关于intValue()方法的API ...
- Java语言类的作用,java 语言Class类的作用,怎么使用?
1,Class类有什么用? Class类的实例表示java应用运行时的类(Class ans enum)或接口(interface and annotation)(每个java类运行时都在JVM里表现 ...
- java常用类:1。包装类(以Integer类为例)2.String类 3.StringBuffer
包装类 把八大基本数据类型封装到一个类中,并提供属性和方法,更方便的操作基本数据类型. 包装类的出现并不是用于取代基本数据类型,也取代不了. 包装类位于java.lang包中. Number 类 Nu ...
- java的知识点15——String基础、String类和常量池、String类常用的方法、字符串相等的判断、组合模式
String基础 1. String类又称作不可变字符序列. 2. String位于java.lang包中,Java程序默认导入java.lang包下的所有类. 3. Java字符串就是Unicode ...
- c++ string类_C++|细说STL string类概貌及底层细节
C语言中的字符串称为C风格字符串,是一个以'0'结尾的字符数组,string.h库只提供了有限.不甚安全的字符串操作函数.char str[]只能定义编译期确定大小的字符串,而保存在堆内存的动态字符数 ...
- C#笔记2__Char类、String类、StringBuilder类 / 正则表达式 /
Char类 String类 字符串的格式化:String类的Format方法 StringBuilder类 以上:百度 or 查手册..... 转载于:https://www.cnblogs.com/ ...
- 【JAVA SE】第十章 String类、StringBuffer类和StringBuilder类
第十章 String类.StringBuffer类和StringBuilder类 文章目录 第十章 String类.StringBuffer类和StringBuilder类 一.String类 1.创 ...
最新文章
- elasticsearch index 之 put mapping
- vb字符串在内存中的分布?
- hdu 5036 Explosion bitset优化floyd
- 【opencv学习】【图像的阈值处理】
- servlet串行拦截器实现例子
- P1959 遗址_NOI导刊2009普及(6)
- kindEditor文本编辑器
- 845. 数组中的最长山脉
- asynDBCenter(修改)
- 航空公司客户价值数据的分析
- jcp jsr_“ IBM和Red Hat *不应*都保留其JCP EC席位”
- 关于hadoop运行成功但是无法链接web页面
- 抛物型偏微分方程的Crank-Nicolson 方法; Richardson 外推法;紧差分法
- 带你一文搞懂VMware Workstation的三种网络模式
- C++基础之 函数(function)
- linux命令字典式总结(按用途分类)
- 网络基础(四) — QUIC协议
- Python根据字体的大小获取字符串像素长度并以表格的形式在图片中显示
- VERTU全球首款WEB3手机METAVERTU伦敦亮相
- AU插件安装 - FabFilter、RX
热门文章
- HDOJ 1671 HDU 1671 Phone List ACM 1671 IN HDU
- R导出可编辑图到ppt:结合使用ggplot2以及officer
- OpenCV 学习笔记 04 深度估计与分割——GrabCut算法与分水岭算法
- 使用本机IP调试web项目
- npm依赖管理:冗余,依赖树
- json处理为字符串,主要函数,dumps和loads
- Hibernate:Hibernate缓存策略详解
- 英语----情态动词---半情态动词
- iOS 面试题集合
- [我给Unity官方视频教程做中文字幕]beginner Graphics – Lessons系列之网格渲染器和过滤器Mesh renderers and filters...