29. StringBuilder
1.字符串变量、StringBuffer、StringBulid的区别:
字符串是一个常量,不能被修改
字符串一旦被修改,那么会再创建一个对象,浪费空间
而StringBuffer字符缓冲类是一个容器,它对它进行增删改操作,非常方便
StringBuilder类提供一个与 StringBuffer兼容的 API,但不保证同步
所以字符串频繁修改时我们推荐使用字符串缓冲类
2.StringBuilder与StringBuffer的相同点和不同点
1)相同点:
a.具有相同的方法
b.都是字符串容器增删改操作,非常方便
2)不同点:
a.StringBuilder用在多线程时不安全,但比StringBuffer的运行效率高
b.StringBuffer同在多线程时安全,但是比StringBuilder的运行效率低
c.StringBuffer是JDK1.0发行的,StringBuilder是JDK1.5发行的
推荐使用StringBuilder,因为在我们实际开发中同时对一个字符串处理的情况很少
如果真的发生多线程问题时还是推荐使用StringBuffer
总结:
如果文本(字符串)不会改变就用String类,因为String对象是不可变的。
如果文本(字符串)可以改变并且在单线程中访问,使用StringBuilder。
如果文本(字符串)可以改变并且在多线程中访问,使用StringBuffer。
3.StringBuilder
查看源代码,我们可以发现此类是用字符数组来储存字符的,默认的空间是16个字符
注意:它可以储存任意类型的数据,因为它有可以添加任何类型数据的append方法重载
此类的构造函数:
StringBuilder() 构造一个其中不带字符的字符串生成器,初始容量为 16 个字符。
注意:如果我们使用append方法添加了大于16个字符的数据,那么容器的大小会增长一倍(其实是一倍加2),
但是如果没有添加大于16个字符的数据,容器的大小还是16,而并不是添加字符的长度
StringBuilder(CharSequence seq) 构造一个字符串生成器,包含与指定的 CharSequence 相同的字符。(CharSequence?)
StringBuilder(int capacity) 构造一个其中不带字符的字符串生成器,初始容量由 capacity 参数指定。
注意:如果我们在创建容器时给它指定容器的大小,再使用append方法添加数据时,
如果超过了我们指定容器大小,那么容器大小会增长一倍(其实是一倍加2)
StringBuilder(String str) 构造一个字符串生成器,并初始化为指定的字符串内容。
注意:如果我们在创建对象的时候,初始化字符串内容那么容器的大小为 字符串的长度加上16
4.StringBuilder的常用函数列表
添加:
append(boolean b) 可以添加任何类型的数据到容器中
insert(int offset, double d) 指定插入的索引值,并插入对应的数据(也可以添加任何类型数据)
删除:
delete(int start , int end ) 删除指定开始和结束索引的数据(包头不包尾)
deleteCharAt(int index) 根据指定的索引删除一个字符
修改:
replace(int start , int end, String str) 修改指定开始和结束位置的数据
reverse() 翻转容器的内容,例如:abc-->cba
setCharAt(int start , char ch) 把指定索引值的字符替换指定的字符
ensureCapacity(int minimumCapacity) 修改容器的大小
查询:
substring(int start , int end) 截取指定位置的字符
indexOf(String str, int fromIndex) 根据指定的位置向后查找第一次出现指定字符的索引值
lastIndexOf(String str, int fromIndex) 根据指定的位置向后查找最后一次出现指定字符的索引值
capacity() 查询容器的大小
length() 查询内容的长度
CharAt(int index) 查询指定索引位置的一个字符
toString() 把容器内容转换成字符串输出
29. StringBuilder的更多相关文章
- [3] 微信公众号开发 - 结合UEditor实现图文消息群发功能
0.写在前面的话 如何实现微信平台后台管理中的,图文消息发送功能? 大概的过程如下: 通过类似表单的形式,将文章各部分内容提交到后台,封装成一个实体类,并持久化到数据库中 需要推送的时候,将不同的文章 ...
- 微信公众号开发 [03] 结合UEditor实现图文消息群发功能
0.写在前面的话 如何实现微信平台后台管理中的,图文消息发送功能? 大概的过程如下: 通过类似表单的形式,将文章各部分内容提交到后台,封装成一个实体类,并持久化到数据库中 需要推送的时候,将不同的文章 ...
- Spring拦截器从Request中获取Json格式的数据
7 package com.newpp.core.interceptor; 8 9 import java.io.BufferedReader; 10 import java.io.ByteArray ...
- Spring Boot实战之Redis缓存登录验证码
1.工具类 1 import lombok.experimental.UtilityClass; 2 3 import java.awt.*; 4 import java.awt.image.Buff ...
- Java 读取文件中的每一行,并为每一行插入特定的字符串
工具 1:Eclipse Java EE IDE for Web Developers. Version: Photon Release (4.8.0). Build id: 20180619-120 ...
- RestPack Java实现Html转PDF文件
最近公司需要将前端一个图表统计导出为pdf.前端导出显示的pdf还是可以的,但是将会导致页面不可用与卡死状态.所以由后端寻找解决方案. 以下为解决方案调研 https://www.cnblogs.co ...
- 关于String中+与StringBuilder的问题
字符串连接可以通过两种方法实现,其中一种是在Java中提供的一个StringBuilder类(这个类只在J2SE5及以上版本提供,以前的版本使用StringBuffer类). 字符串是Java程序 ...
- 探秘Java中的String、StringBuilder以及StringBuffer
探秘Java中String.StringBuilder以及StringBuffer 相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问 到的地方,今天就来和大家一起学习 ...
- C#基础知识系列三(类和结构体、String和StringBuilder、equals和==)
前言 这一节主要来了解一下类和结构体之间的异同点.以及针对String和StringBuilder的用法.equals和==,其实可以看出很多地方都用到了上一节的值类型和引用类型.堆栈和装箱拆箱操作吧 ...
随机推荐
- tex, virtex, initex - 文本格式化和排版
SYNOPSIS 总览 tex [options] [commands] DESCRIPTION 描述 这份手册页并不全面.此版本的 TeX 完整的文档可以从 info 文件或者手册 Web2C: A ...
- 一篇不一样的Android屏幕适配具体做法(原创)
转载请注明出处(http://www.cnblogs.com/weizhxa/p/7568090.html ) 有不正确,还请大家留言修正! 1.何谓屏幕适配:在任何设备上看起来布局都是近似的,细分也 ...
- 代理端口转发工具rinetd
转载: https://my.oschina.net/wuweixiang/blog/2983280 rinetd 前言 iptables 的功能当然强大,但理解与设置却有点抽象,便通过google认 ...
- springcloud feign增加熔断器Hystrix
1.依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>s ...
- NX二次开发CreateDialog函数在UI.hxx文件和WinUser.h中的冲突【转载】
文章出自https://blog.csdn.net/qq_41843732/article/details/91422764 在UG二次开发中,若使用MFC库,一旦加上#include<Afx. ...
- js 读取本地文件(必须通过input控件才能实现) 及 下载文件
js 操作 文件的实现原理: 1.js是不能直接操作(读写)文件的,html的 input[type="file"] 控件是可以读取文件数据(获取文件数据流)的.js可以获取这个 ...
- 敏捷在《PMBOK指南》知识领域中的应用
<PMOBOK指南>知识领域 敏捷工作过程中的应用 第四章 项目整合管理 迭代和敏捷方法能够促进团队成员以相关领域专家的身份参与整合管理.团队成员自行决定计划及其组件的整合方式.在适应型环 ...
- JVM简介及类加载机制(一)
JVM介绍: 目标:JVM运行字节码文件,根据JVM的日志调节程序,对于底层原理有一定的了解 1. 类加载 在JAVA代码中,类型的加载,连接与初始化都是在程序运行期间完成的,提供了灵活性增加了更多的 ...
- Keepalived 双主虚拟路由配置实例
Keepalived 双主虚拟路由配置实例 演示前说明: 2台centos7.2 主机:node-00,node-01 VIP1:10.1.38.19预定node-00占有 VIP2:10.1.38. ...
- 一、数据库、SQL简介
1.数据库简介 1.1数据库:保存有组织的数据的容器(通常是一个文件或一组文件) 数据库软件:称为数据库管理系统(DBMS),数据库是通过DBMS创建和操纵的.通常用户使用DBMS访问数据库. 表:表 ...