JAVASE基础模块十五(StringBuffer类)
2020-07-29 17:10
513 查看
JAVASE基础模块十五(StringBuffer类)
public class Stbuffer { public static void main(String[] args) { //总共创建五个地址空间 String str = "abc"; str += "ccc"; str += "dddd"; //只创建一个地址空间 String s = "abc"+"ccc"+"dddd"; } }
StringBuffer类
- StringBuffer 线程安全的可变字符序列 相当于一个字符容器,你可以不断的往容器中追加字符
public class Stbuffer { public static void main(String[] args) { //创建一个空的字符容器 StringBuffer s = new StringBuffer(); StringBuffer ss = new StringBuffer(100); StringBuffer sss = new StringBuffer("abcacbacb"); //往容器中追加数据 s.append("ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss"); //获取容器的容量 System.out.println(s.capacity()); System.out.println(ss.capacity()); System.out.println(sss.capacity()); //获取容器的长度 System.out.println(s.length()); System.out.println(ss.length()); System.out.println(sss.length()); //容器与长度不同 前者是理想最大容量 后者是真实长度 }} 运行结果: 64 100 25 64 0 9 Process finished with exit code 0
- 特点:
-
往容器中追加数据 返回还是原来的那个容器
- StringBuffer 重写了toString()方法 然后把容器中的数据转换成字符串返回
public class Sr { public static void main(String[] args) { StringBuffer s = new StringBuffer(); //往容器中追加数据 返回还是原来的那个容器 StringBuffer c = s.append("ssssssssss"); System.out.println(c == s);//true s.append(333).append(777); //StringBuffer 重写了toString()方法 然后把容器中的数据转换成字符串返回 System.out.println(s); System.out.println(s.toString()); } } 运行结果: true ssssssssss333777 ssssssssss333777 Process finished with exit code 0
- 指定插入
public class Stbr { public static void main(String[] args) { StringBuffer s = new StringBuffer("chenmo"); s.append("shirenlei").append("debaoguibenzhi"); //StringBuffer 里面的数据也是编有索引的 //在容器中的指定位置 插入数据 返回的还是原来的数据 StringBuffer dd = s.insert(0, "banxiuxiudaobanyuanjun"); System.out.println(s); System.out.println(dd); } } 运行结果:banxiuxiudaobanyuanjunchenmoshirenleidebaoguibenzhi banxiuxiudaobanyuanjunchenmoshirenleidebaoguibenzhi Process finished with exit code 0
- 删除
public class Stbr { public static void main(String[] args) { StringBuffer ss = new StringBuffer("哈哈哈衣带渐宽终不悔 为伊消得人憔悴哈哈"); //根据指定索引 删除容器中的单个字符 ss.deleteCharAt(0); System.out.println(ss); //删除一段字符 返回的 ss.delete(0,1).delete(ss.length()-2,ss.length()-1); System.out.println(ss); } } 哈哈衣带渐宽终不悔 为伊消得人憔悴哈哈 哈衣带渐宽终不悔 为伊消得人憔悴哈 Process finished with exit code 0
- 反转与替换
public class Tihuan { public static void main(String[] args) { StringBuffer ss = new StringBuffer("衣带渐宽终不悔 为伊消得人憔悴 哈哈"); int h = ss.indexOf("哈"); //根据起始索引与终止索引 替换容器中的一部分内容 返回的还是容器本身 StringBuffer ee = ss.replace(h, ss.length(), "灯火阑珊处"); System.out.println(ee); //反转 反悔的还是容器本身 返回的还是容器本身 StringBuffer aa = ss.reverse(); System.out.println(aa); } } 运行结果: 衣带渐宽终不悔 为伊消得人憔悴 灯火阑珊处 处珊阑火灯 悴憔人得消伊为 悔不终宽渐带衣 Process finished with exit code 0
- 截取
public class Tihuan { public static void main(String[] args) { StringBuffer ss = new StringBuffer("衣带渐宽终不悔 为伊消得人憔悴 哈哈"); //截取 根据起始索引与终止索引 截取容器中一部分内容 返回string类型 字符串 System.out.println(ss.substring(0, 7)); } } 衣带渐宽终不悔 Process finished with exit code 0
- 参数传递
public class Canshuchuandi { public static void main(String[] args) { //引用类型传递作为参数传递 形参的改变会影响实参 //String类型作为参数传递 属于值传递 会把字符串的值传递过去 String er="五花马千金裘"; change(er); System.out.println(er); StringBuffer dd = new StringBuffer("朝为"); change(dd); System.out.println(dd); } public static void change(StringBuffer er) { er.append("呼儿将出换美酒").append("卿卿暮暮"); System.out.println(er); } public static void change(String er) { er+="呼儿将出换美酒"; System.out.println(er); } } 运行结果: 五花马千金裘呼儿将出换美酒 五花马千金裘 朝为呼儿将出换美酒卿卿暮暮 朝为呼儿将出换美酒卿卿暮暮 Process finished with exit code 0
-
StringBuilder
// StringBuffer 线程安全的字符序列,效率低 // StringBuilder 一个可变的字符序列,线程不安全的,效率高 // 此类提供一个与 StringBuffer 兼容的 API,但不保证同步。 // 该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。 // 如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。
-
类型转换
public class Leixingzhuanhuan { public static void main(String[] args) { String s="身无彩凤双飞翼"; StringBuffer ss=new StringBuffer("零丁洋里叹零丁"); //string---stringbuffer //方式1 StringBuffer se = new StringBuffer(s); System.out.println(se); //方式2: StringBuffer sb2 = new StringBuffer(); sb2.append(s); System.out.println(sb2); //方式3: StringBuffer sb3 = new StringBuffer(); sb3=sb2.insert(0,s); System.out.println(sb3); ////stringbuffer---string //方式一 toString() StringBuffer sb4 = new StringBuffer("aaaaa"); String s1=ss.toString(); System.out.println(s1); //String 类中有一个构造方法 String s2 = new String(sb4); System.out.println(s2); } } 运行结果: 身无彩凤双飞翼 身无彩凤双飞翼 身无彩凤双飞翼 零丁洋里叹零丁 aaaaa Process finished with exit code 0
待续 …
相关文章推荐
- JAVASE基础模块二十(Math System 常用类)
- JAVASE基础(十五)
- 黑马程序员_JavaSE基础知识总结十五:反射
- JavaSe基础XX16——API对象-StringBuffer类
- JAVASE基础模块十六(冒泡排序 快速排序 直接插入排序 选择排序)
- JavaSE_基础库类_StringBuffer类
- JAVASE基础模块十八(基本数据类型的包装类型)
- Python基础笔记_Day04_数据类型、math模块、random模块、string模块
- 26.javase-基础加强-设计模式之单例模式
- javaSE基础知识_第一章java概述
- JavaSE基础部分--(一)
- JavaSE基础 - 查表法
- JAVA学习day10 JavaSE基础——方法参数类型及返回值类型问题、权限修饰符、内部类、匿名内部类
- python学习之路——基础篇(3)模块(续)
- JavaSE基础语法中的修饰符
- Python 第三篇(上):python文件基础操作、json模块、lambda、map、filter、reduce和函数位置参数
- Python基础(变量、数据类型、输入与输出、运算符、random模块、turtle模块)
- JavaSE 拾遗(2)——JavaSE 面向对象程序设计语言基础(2)...变量
- JavaSE 拾遗(3)——JavaSE 面向对象程序设计语言基础(3)...函数
- Java程序员面试题(一)JavaSE基础 - 上