StringBuilder与String互转
StringBuilder类是一个可变的字符序列。
StringBuilder()
构造一个不带任何字符的字符串生成器,其初始容量为 16 个字符。
StringBuilder(CharSequence seq)
构造一个字符串生成器,它包含与指定的 CharSequence 相同的字符。
StringBuilder(int capacity)
构造一个不带任何字符的字符串生成器,其初始容量由 capacity 参数指定。
StringBuilder(String str)
构造一个字符串生成器,并初始化为指定的字符串内容。
StringBuilder类的几个常用方法:
append(任意类型) 追加到字符串后面
reverse 反转字符串
insert(int offset, 任意类型) 在某个index后插入字符串
toString() 返回String类的对象
先看一段String类的字符串拼接的代码。
String s = "hello" 会在常量池开辟一个内存空间来存储”hello"。
s += "world"会先在常量池开辟一个内存空间来存储“world"。然后再开辟一个内存空间来存储”helloworld“。
这么以来,001与002就成为了垃圾内存空间了。这么简单的一个操作就产生了两个垃圾内存空间,如果有大量的字符串拼接,将会造成极大的浪费。
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与String互转的更多相关文章
- [java] StringBuilder / StringBuffer / String 建立字符串
1.三者在建立新字符串速度方面的比较: StringBuilder > StringBuffer > String 2.线程安全性: StringBuilder:线程非安全的 Str ...
- 不同Framework下StringBuilder和String的性能对比,及不同Framework性能比(附Demo)
本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 阅读目录 介绍 环境搭建 测试用例 MSDN说明 ...
- JAVA StringBuilder StringBuffer String比较
字符串连接时的效率: StringBuilder>StringBuffer>String 区别: StringBuilder效率最高,但是不是线程安全的,适用于单线程.多线程用String ...
- 从源代码的角度聊聊java中StringBuffer、StringBuilder、String中的字符串拼接
长久以来,我们被教导字符串的连接最好用StringBuffer.StringBuilder,但是我们却不知道这两者之间的区别.跟字符串相关的一些方法中总是有CharSequence.StringBuf ...
- [读书笔记]C#学习笔记八:StringBuilder与String详解及参数传递问题剖析
前言 上次在公司开会时有同事分享windebug的知识, 拿的是string字符串Concat拼接 然后用while(true){}死循环的Demo来讲解.其中有提及string操作大量字符串效率低下 ...
- String+,StringBuilder,String.format运行效率比较
实现String字符串相加的方法有很多,常见的有直接相加,StringBuilder.append和String.format,这三者的运行效率是有差异的,String是final类型的,每次相加都会 ...
- StringBuilder和string.Format性能对比
本文由博主(YinaPan)原创,转载请注明出处:http://www.cnblogs.com/YinaPan/p/sbformat.html StringBuilder的性能优于string.For ...
- Java8 LocalDateTime获取时间戳(毫秒/秒)、LocalDateTime与String互转、Date与LocalDateTime互转
本文目前提供:LocalDateTime获取时间戳(毫秒/秒).LocalDateTime与String互转.Date与LocalDateTime互转 文中都使用的时区都是东8区,也就是北京时间.这是 ...
- highcharts 大数据 String+,StringBuilder,String.format运行效率比较
实现String字符串相加的方法有很多,常见的有直接相加,StringBuilder.append和String.format,这三者的运行效率是有差异的,String是final类型的,每次相加都会 ...
随机推荐
- 集合框架-Map集合特点及常用方法
1 package cn.itcast.p6.map.demo; 2 3 import java.util.HashMap; 4 import java.util.Iterator; 5 import ...
- 一份尽可能全面的Go channel介绍
写在前面 针对目前网络上Go channel知识点较为分散(很难有单独的一份资料把所有知识点都囊括进来)的情况,在下斗胆站在巨人的肩膀上,总结了前辈的工作,并加入了自己的理解,形成了这篇文章.本文类似 ...
- JavaCV的摄像头实战之二:本地窗口预览
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- SpringBoot整合Nacos自动刷新配置
目的 Nacos作为SpringBoot服务的注册中心和配置中心. 在NacosServer中修改配置文件,在SpringBoot不重启的情况下,获取到修改的内容. 本例将在配置文件中配置一个 cml ...
- Intellig Idea 常用快捷键列表
修改方法如下: 点击 文件菜单(File) –> 点击 设置(Settings- Ctrl+Alt+S), –> 打开设置对话框. 在左侧的导航框中点击 KeyMap. 接着在右边的树型框 ...
- Java高并发下多线程编程
1.创建线程 Java中创建线程主要有三种方式: 继承Thread类创建线程类: 定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务.因此也把run方法称为 ...
- NSURLConnection和Runloop(面试)
(1)两种为NSURLConnection设置代理方式的区别 //第一种设置方式: //通过该方法设置代理,会自动的发送请求 // [[NSURLConnection alloc]initWithRe ...
- 自定义的类实现copy操作
1.自定义类实现copy操作 让类遵守NSCopying协议 实现 copyWithZone:方法,在该方法中返回一个对象的副本即可. 在copyWithZone方法中,创建一个新的对象,并设置该对象 ...
- mysql处理警告 Warning: Using a password on the command line interface can be insecure.
vim /etc/mysql/my.cnf [mysqldump] user=user_name password=password 格式: [只用密码的命令] user=用户名 password=密 ...
- K8s多节点部署+负载均衡+keepalived ——囊萤映雪
K8s多节点部署+负载均衡+keepalived --囊萤映雪 1.多节点master2 部署 2.负载均衡部署+keepalived 1.多节点master2部署: #从master01节点上拷贝证 ...