Java - 常用类 - StringBuffer类
文章目录
- StringBuffer类基本介绍
- String VS StringBuffer
- StringBuffer的构造器
- StringBuffer <=> String 相互转换
- StringBuffer类常见对象
- StringBuffer类练习题目分析
- 案例
StringBuffer类基本介绍
- java.lang.StringBuffer代表可变的字符序列,可以对字符串内容进行增删
- 很多方法与String相同,但StringBuffer是可变长度的
- StringBuffer是一个容器
String VS StringBuffer
- String保存的是字符串常量,里面的值不能更改,每次String类的更新实际上就是更改地址,效率较低 //private final char value[];
- StringBuffer保存的是字符串变量,里面的值可以更改,每次StringBuffer的更新实际上可以更新内容,不用更新地址,效率较高
char[] value;//这个放在堆空间
package com.tao.stringbuffer_;/*** Create By 刘鸿涛* 2022/1/2 17:21*/
public class StringBuffer01 {public static void main(String[] args) {//1.StringBuffer 的直接父类是 AbstractStringBuilder//2.StringBuffer 实现了 Serializable接口,即StringBuffer的对象可以串行化//3.在父类中 AbstractStringBuilder 有属性 char[] value,不是final// 该 value数组存放 字符串内容,因此存放在堆中//4.StringBuffer是一个final类//5.因为StringBuffer 字符内容是在 char[]value ,所以在变化(增加/删除)// 不用每次都更换地址(即不是每次创建新对象),所以效率高于StringStringBuffer stringBuffer = new StringBuffer("hello");}
}
StringBuffer的构造器
package com.tao.stringbuffer_;/*** Create By 刘鸿涛* 2022/1/2 17:34*/
public class StringBuffer02 {public static void main(String[] args) {//构造器的使用//1.创建一个 大小为 16的 char[],用于存放字符内容StringBuffer stringBuffer = new StringBuffer();//2.通过构造器指定 char[]大小StringBuffer stringBuffer1 = new StringBuffer(100);System.out.println(stringBuffer1.length()); //0//3.通过 给一个String 创建 StringBuffer,char[] 大小就是// stringBuffer1.length() + 16StringBuffer hello = new StringBuffer("hello");System.out.println(hello.length()); //5System.out.println(hello); //hello}
}
StringBuffer <=> String 相互转换
package com.tao.stringbuffer_;/*** Create By 刘鸿涛* 2022/1/2 17:44*/
public class StringBuffer03 {public static void main(String[] args) {//看 String -> StringBufferString str = "hello tom";//方式1 使用构造器//注意:返回的才是StringBuffer对象,对str 本身没有影响StringBuffer stringBuffer = new StringBuffer(str);System.out.println(stringBuffer + "\t" + str); //hello tom hello tom//方式2 使用的是append方法StringBuffer stringBuffer1 = new StringBuffer();stringBuffer1 = stringBuffer1.append(str);System.out.println(stringBuffer1); //hello tom//看看 StringBuffer -> String//方式1StringBuffer stringBuffer2 = new StringBuffer("鬼鬼");String s = stringBuffer2.toString();System.out.println(s); //鬼鬼//方式2String s1 = new String(stringBuffer2);System.out.println(s1); //鬼鬼}
}
StringBuffer类常见对象
- 增 append
- 删 delete(start,end)
- 改 replace(start,end,string)->将start—end 间的内容替换掉,不含end
- 查 indexOf->查找子串在字符串第1次出现的索引,如果找不到返回 -1
- 插 insert
- 获取长度 length
package com.tao.stringbuffer_;/*** Create By 刘鸿涛* 2022/1/2 18:10*/
public class StringBufferMethod {public static void main(String[] args) {// 1. 增 appendStringBuffer s = new StringBuffer("hello");s.append(",");System.out.println(s); //hello,s.append("赵敏").append(100).append(true).append(10.0);System.out.println(s); //实际上是s.toString() -> hello,赵敏100true10.0// 2. 删 delete(start,end)/*删除索引为 >= start && end 处的字符解读:删除 5 ~ 15 的字符 [11,14)*/s.delete(5,15);System.out.println(s); //hello10.0// 3. 改 replace(start,end,string)->将start---end 间的内容替换掉,不含ends.replace(1,5,"周芷若"); //h周芷若10.0System.out.println(s);// 4. 查 indexOf->查找子串在字符串第1次出现的索引,如果找不到返回 -1int s2 = s.indexOf("周芷若");System.out.println(s2); //1// 5. 插 inserts.insert(1,"鬼鬼");System.out.println(s); //h鬼鬼周芷若10.0// 6. 获取长度 lengthSystem.out.println(s.length());}
}
StringBuffer类练习题目分析
String str = null;
StringBuffer sb = new StringBuffer();
sb.append(str); //需要看源码,底层调用的是AbstractStringBuilder 的 appendNull
System.out.println(sb.length()); //4 所以字符数组null 4个长度System.out.println(sb); //null
StringBuffer sb1 = new StringBuffer(str); //这里看源码,首先是有参构造器,调用super(str.length() + 16),因为str没有长度,所以会抛出空指针异常
System.out.println(sb1); //wrong
案例
输入商品名称和商品价格,要求打印效果示例,使用前面学习的方法完成;
商品名 商品价格
手机 123,456.78 //比如 3,456,789.10
要求:价格的小数点前面每三位用逗号隔开,再输出
Mycode
package com.tao.stringbuffer_;import java.util.Scanner;/*** Create By 刘鸿涛* 2022/1/2 18:38*/
public class StringBufferExercise01 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String input = sc.next();int point = input.indexOf('.');System.out.println(point);StringBuffer price = new StringBuffer(input);if(point > 3)price.insert(point - 3,',');if(point > 6)price.insert(point - 6,',');System.out.println(price);}
}
Teacher 's code
package com.tao.stringbuffer_;import java.util.Scanner;/*** Create By 刘鸿涛* 2022/1/2 18:38*/
public class StringBufferExercise01 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String input = sc.next();int point = input.indexOf('.');System.out.println(point);StringBuffer price = new StringBuffer(input);for(int i = point; i > 3 ; i -= 3){price.insert(i - 3,',');}System.out.println(price);}
}
Java - 常用类 - StringBuffer类相关推荐
- Java 常用对象-StringBuffer类
2017-11-02 20:57:02 StringBuffer:线程安全的可变字符序列.一个类似于 String 的字符串缓冲区,但不能修改.虽然在任意时间点上它都包含某种特定的字符序列,但通过某些 ...
- java.util类,GitHub - yutaolian/JavaUtils: 总结的一些Java常用的util类
JavaUtils 总结的一些Java常用的util类 ###1.格式化时间 SimpleDateFormat(DateFormat)实现线程安全的使用 众所周知SimpleDateFormat(Da ...
- Java常用接口与类——String类、StringBuffer类、StringBuilder类
>String的构造方式 //这两种方式字符串的值是相同的,但在内存中的地址不同: //s1是在常量池中,常量池中有一个hello,同一常量只会放入一次: String s1="hel ...
- JAVASE学习笔记 Java中的常用类--StringBuffer类、StringBuilder类
1.StringBuffer类概述 在Java中我们如果对字符串进行拼接操作,每次拼接都能构建一个新的String对象,这样操作既费时有浪费时间,StringBuffer类就能解决这个问题. Stri ...
- day15 Java 常用类 StringBuffer类
文章目录 一.构造方法 1.1 StringBuffer() 1.2 StringBuffer(int capacity) 1.3 StringBuffer(String str) 二.StringB ...
- stringbuffer java API_JAVA-基础-常用API(StringBuffer类,正则表达式)
字符串缓冲区 StringBuffer类 查阅StringBuffer的API,StringBuffer又称为可变字符序列,它是一个类似于 String 的字符串缓冲区,通过某些方法调用可以改变该序列 ...
- [JAVA基础类库] String类 ○ StringBuffer类 ○ StringBuilder类
引言 字符串就是一连串的字符序列,Java提供了String.StringBuffer和StringBuilder三个类来封装对字符串,并提供了系列方法来操作字符串对象. String类是不可变类的: ...
- java.lang包—StringBuffer类和StringBuilder类
目录 一.数据结构 二.线程安全性分析 三.源码 四.适用场景 一.数据结构 在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串.String 类是不可变类,即一旦一 ...
- java常用文件工具类
java常用工具类(一) 主要是Java操作文件及及IO流的一些常用库,是Apache对java的IO包的封装,这里面文件类工具有两个非常核心的类FilenameUtils跟FileUtils,IO流 ...
最新文章
- C#隐藏手机号中间四位为*
- R语言使用coin包应用于独立性问题的置换检验(permutation tests)、使用普通cor.test函数和置换近似spearman_test函数、检验变量的相关性的显著性
- 雷军的“初恋”回来了
- Mac OS X 修复基本命令失效的问题
- boost::mp11::mp_transform相关用法的测试程序
- P1991-无线通讯网【最小生成树,瓶颈生成树】
- Andrew Ng 的 Machine Learning 课程学习 (week4) Multi-class Classification and Neural Networks
- 老婆回家时没有帮老婆打点,也完全忘记提醒老婆晚上火车上很凉,内疚.亲爱的,对不起!...
- Android-广播
- python爬虫详解
- 怎样用计算机粉碎文件夹,电脑粉碎文件用什么软件好,怎么彻底粉碎电脑文件...
- 服务器server.c、搜索serach.c
- 简述T568A和T568B的区别
- 手把手教你如何免费把多张图片合并为PDF文件,一看就懂。
- 无法使用计算机名访问共享,局域网内无法用计算机名访问共享的解决办法
- GNSS/INS组合导航(八):INS/GPS组合导航
- Web安全-ReDos正则表达式的拒绝服务攻击
- CSS复合选择器:后代选择器
- Android连接SQLServer详细教程(数据库+服务器+客户端),并在微软Azure云上搭建云服务
- kingcms修改笔记