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和==,其实可以看出很多地方都用到了上一节的值类型和引用类型.堆栈和装箱拆箱操作吧 ...
随机推荐
- Kali Linux 开启SSH
Kali Linux安装好默认是不开启ssh的,需要手工开启 1.修改/etc/ssh/sshd_config 配置文件: root@mykali:~# vi /etc/ssh/sshd_confi ...
- iptables 防火墙(下)
iptables 防火墙(下) 1. 常见的隐含匹配条件: 1.1 端口匹配: --sport 源端口.--dport 目的端口 1.2 TCP标记匹配: -tcp-flags 检查范围被设置的标记 ...
- Codeforces 1105E 最大独立集 状态DP 中途相遇法
题意:你有一个字符串, 有两种操作,一种是改变字符串,一种是某个用户询问这个字符串,如果一个用户每次查询字符串的时候都是他的用户名,他就会高兴.问最多有多少个用户会高兴? 题意:容易发现,在两个1操作 ...
- day02 python流程控制 while循环 格式化输出 运算符 编码
day02 python 一.循环: while循环 while expression: while_suite 1.break 停止当前循环(如果多个循环嵌套, ...
- linux中python3的安装
yum -y install openssl-devel #要使用pip3需要安装这个软件tar xf Python-3.5.6.tgz cd Python-3.5.6 ./configure --p ...
- Ubuntu开放对外端口
1.查看已经开启的端口 sudo ufw status 2.打开80端口 sudo ufw allow 80 3.防火墙开启 sudo ufw enable 4.防火墙重启 sudo ufw relo ...
- 基础(一):SCSI硬盘与IDE硬盘有什么区别
硬盘接口是硬盘与主机系统间的连接部件,作用是在硬盘缓存和主机内存之间传输数据.不同的硬盘接口决定着硬盘与计算机之间的连接速度,在整个系统中,硬盘接口的优劣直接影响着程序运行快慢和系统性能好坏.从整体的 ...
- [bzoj2839]集合计数 题解 (组合数+容斥)
Description 一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得 它们的交集的元素个数为K,求取法的方案数,答案模1000000007 ...
- STM32嵌入式开发学习笔记(七):串口通信(下)
下面我们进行几个串口通信的实际应用. 实验一:发信实验,让开发板通过串口向电脑发送信息: #include <stdio.h> #include <stm32f10x.h> # ...
- 2019 wannafly winter camp day1-4代码库
目录 day1 F div1 爬爬爬山 (最短路) B div2 吃豆豆 (dp) J div2 夺宝奇兵(暴力) J div1 夺宝奇兵 (权值线段树) C div1 拆拆拆数 E div1 流流流 ...