3、StringBuffer类
StringBuffer类
java.lang.StringBuffer代表可变的字符序列,可以对字符串内容进行增删
很多方法与String相同,但StringBuffer是可变长度的 StringBuffer是一个容器
StringBuffer 的直接父类是 AbstractStringBuilder
StringBuffer 实现了 Serializable,即StringBuffer的对象可以串行化
在父类 AbstractStringBuilder 有属性 char[] value ,不是final
该 value 数组存放 字符串内容,因此存放在堆中的StringBuffer 是一个 final 类,不能被继承
因为StringBuffer 字符内容是存在 char[] value,所以再变化(增加/删除)时,不用每次
都更换地址(即不是每次创建对象),所以效率高于 String
String VS StringBuffer
String保存的是字符串常量,里面的值不能更改,每次String类的更新实际上就是更改地址,
效率极低 //private final char value[];
StringBuffer保存的是字符串变量,里面的值可以更改,每次StringBuffer的更新实际上可以
更新内容,不用每次更新地址,效率极高 //char[] value; //这个放在堆
StringBuffer的构造器
StringBuffer() 构造一个其中不带字符的字符串缓冲区,其初始容量为16个字符
StringBuffer(CharSequence seq) public java.long.StringBuilder(CharSequence seq) 构造一个
字符串缓冲区,它包含与其指定的CharSequence 相同的字符。 (不常用)
StringBuffer(int capacity) //capacity[容量] 构造一个不带字符,但具有指定初始容量的字符串缓冲区。
即对 char[] 大小进行指定
StringBuffer(String str) 构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容
//1. 创建一个大小为 16的 char[] ,用于存放字符内容
StringBuffer stringBuffer = new StringBuffer();
//2. 通过构造器指定 char[] 大小
StringBuffer sTringBuffer = new StringBuffer(100);
//3. 通过给一个String 创建 StringBuffer,char[] 大小就是 str.length() + 16
StringBuffer hello = new StringBuffer("hello");
String 和 StringBuffer 相互转换
// String -> StringBuffer
String str = "hello tom";
// 方式1
// 注意:返回的才是StringBuffer对象,对str 本身没有影响
StringBuffer stringBuffer = new StringBuffer(str);
//方式2 使用的时append() 方法
StringBuffer stringBuffer1 = new StringBuffer();
stringBuffer1 = stringBuffer1.append(str);
// StringBuffer -> String
StringBuffer stringBuffer3 = new StringBuffer("好好学习");
//方法1 使用StringBuffer提供的 toString方法
String s = stringBuffer3.toString();
//方式2:使用构造器来搞定
String s1 = new String(stringBuffer3);
StringBuffer类常用方法
StringBuffer s = new StringBuffer("hello");
//增
s.append(',');
s.append("张三丰");
s.append("赵敏").append(100).append(true).append(10.5);
System.out.println(s); //删
/*
删除索引为 >=start && <end 处的字符
删除 11-14的字符 [11,14)
*/
s.delete(11,14);
System.out.println(s); //改
//使用 周芷若 替换 索引9-11的字符 [9,11)
s.replace(9,11,"周芷若");
System.out.println(s); //查找
//查找指定的字符串在字符串中第一次出现的索引,如果找不到返回-1
int indexOf = s.indexOf("张三丰");
System.out.println(indexOf); //插
//在索引为9的位置插入 赵敏 ,原来索引为9的内容自动后移
s.insert(9,"赵敏");
System.out.println(s); //长度
System.out.println(s.length());
System.out.println(s);
练习
String price = "8123564.59";
StringBuffer sb = new StringBuffer(price);
//int i = sb.lastIndexOf(".");
//sb = sb.insert(i - 3,",");
for (int i = sb.lastIndexOf("."); i > 3; i -= 3) {
sb = sb.insert(i - 3,",");
}
System.out.println(sb);
//运行结果:8,123,564.59
最新文章
- 瞄准SMART目标
- SCVMM问题汇总
- 每天一条Linux命令(OS X系统上操作)
- You don&#39;t seem to have &#39;make&#39; or &#39;gmake&#39; in your PATH
- Linux 火狐浏览器安装Flash插入
- C# 对象池的实现
- 【安富莱二代示波器教程】第18章 附件C---波形拟合
- [模板] 后缀自动机&;&;后缀树
- [浏览器事件循环] javaScript事件循环 EventLoop
- Python 官方中文教程(简)
- Multiple dex files define Lcom/google/gson/internal/Streams$AppendableWriter$CurrentWrite;
- c++ 的绝对值函数
- SCTP一到多式流分回射服程序
- SpringMVC文件下载与JSON格式
- MySQL中的isnull、ifnull和nullif函数用法
- mysql命令(三)
- Android工程中javax annotation Nullable找不到的替代方案
- java代码实现图片处理功能。对图片质量进行压缩。
- 安装OpenOffice
- Oracle性能诊断艺术-读书笔记
热门文章
- Unsupported major.minor version 52.0 (unable to load class org.apache.kafka.clients.producer.Produce异常解决方法
- ByDesign各版本区别
- Android Studio 的初次使用
- scala WordCount案例
- .Net之时间轮算法(终极版)定时任务
- IO概述(概念&;分类)和字节输入流+OUTputStream类&;FileOutPutStream类介绍
- RabbitMQ延迟消息:死信队列 | 延迟插件 | 二合一用法+踩坑手记+最佳使用心得
- JavaWeb--HTTP与Maven
- YII服务定位器依赖注入
- Linux 的常用基本命令