- StringBuffer类
-
package com.model.stringbuffer; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/7/4 18:23 * 演示StringBuffer类的使用 */ public class StringBufferDemo01 { public static void main(String[] args) { /** *char[] value;\ * //1. StringBuffer的直接父类是 AbstractStringBuilder * //2.StringBuffer实现了Serializable,即StringBuffer的对象可以串行化 * //3.在父类中 AbstractStringBuilder有属性char[] value,不是final * // 该value 数组存放字符串内容,引出存放在堆中的 * //4. StringBuffer是一个 final类,不能被继承 * //5.因为StringBuffer字符内容是存在 char[] value,所有在变化(增加/删除) * // 不用每次都更换地址(即创建新对象),所以他的效率是高于String的 * */ StringBuffer buffer=new StringBuffer(); } }
-
-
package com.model.stringbuffer; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/7/4 18:23 * 演示StringBuffer类的使用 */ public class StringBufferDemo01 { public static void main(String[] args) { /** *char[] value;\ * //1. StringBuffer的直接父类是 AbstractStringBuilder * //2.StringBuffer实现了Serializable,即StringBuffer的对象可以串行化 * //3.在父类中 AbstractStringBuilder有属性char[] value,不是final * // 该value 数组存放字符串内容,引出存放在堆中的 * //4. StringBuffer是一个 final类,不能被继承 * //5.因为StringBuffer字符内容是存在 char[] value,所有在变化(增加/删除) * // 不用每次都更换地址(即创建新对象),所以他的效率是高于String的 * */ /* * String 和StringBuffer的相互转换 * */ //String 转为StringBuffer //第一种使用StringBuffer的构造器 String str="abc"; StringBuffer buffer=new StringBuffer(str); //第二种,使用StringBuffer的append()方法 String str1="abc"; StringBuffer buffer1 = new StringBuffer(); buffer1.append(str1); //StringBuffer转为String类型 //第一种使用StingBuffer的toString()方法 StringBuffer buffer2 = new StringBuffer("abc"); String s = buffer2.toString(); System.out.println(s); //第二种使用new String(),String的构造器 StringBuffer buffer3 = new StringBuffer("abc"); String s1 = new String(buffer3); System.out.println(s1); } }
-
-
package com.model.stringbuffer; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/7/4 18:55 * 演示StringBuffer类的常用方法 */ public class StringBufferDemo02 { public static void main(String[] args) { StringBuffer buffer = new StringBuffer(); // 1.添加 buffer.append("0123456789"); // public synchronized String toString() { // if (toStringCache == null) { // toStringCache = Arrays.copyOfRange(value, 0, count); // } // return new String(toStringCache, true); //直接将拼接的字符数组转为字符串 new String(); // } System.out.println(buffer.toString()); // 2.删除 buffer.delete(0, 4);//删除下标为0到4的字符不包含4 [0,4) System.out.println(buffer); // 3.修改 buffer.replace(0, 2, "张紫韩"); //0到2的字符替换为张紫韩不包含小标为2的字符 [0,2) System.out.println(buffer); // 4.查找 int index = buffer.indexOf("9"); //查找字符串中第一次出现 9 的位置,没有则返回-1 System.out.println(index); // 5.插入 buffer.insert(0, "zzh"); //在索引为0的位置插入zzh其他的依次向后移动 System.out.println(buffer); // 6.长度 System.out.println(buffer.length()); } }
-
-
package com.model.stringbuffer; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/7/4 19:12 * 演示StringBuffer类的练习题 */ public class StringBufferDemo03 { public static void main(String[] args) { /** * public AbstractStringBuilder append(String str) { if (str == null) //如果append为null return appendNull(); //就使用一个appendNull()方法 int len = str.length(); ensureCapacityInternal(count + len); str.getChars(0, len, value, count); count += len; return this; } appendNull():将null分解为 ’n‘ ’ u‘ ’l‘ ’l‘ 四个字符加入到底层的字符数组中 private AbstractStringBuilder appendNull() { int c = count; ensureCapacityInternal(c + 4); final char[] value = this.value; value[c++] = 'n'; value[c++] = 'u'; value[c++] = 'l'; value[c++] = 'l'; count = c; return this; } * */ String str=null; StringBuffer buffer = new StringBuffer(); buffer.append(str); //null会加入到底层的字符数组中 System.out.println(buffer); System.out.println(buffer.length()); /** * public StringBuffer(String str) { * super(str.length() + 16); //null.length() 抛出空指针异常 * append(str); * }*/ StringBuffer buffer1 = new StringBuffer(str);//会抛出空指针异常 } }
-
-
package com.model.stringbuffer; import java.util.Scanner; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/7/4 19:25 * 演示StringBuffer类的练习题 */ public class StringBufferDemo04 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); Double price = scanner.nextDouble(); StringBuffer buffer = new StringBuffer(String.valueOf(price)); int index = buffer.indexOf("."); index-=3; while(index>0){ buffer.insert(index, ","); index-=3; } System.out.println(buffer); } }
-
- StringBuilder类:
-
package com.model.stingbuilder; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/7/4 19:41 * 演示StringBuilder类的使用 */ public class StringBuilderDemo01 { public static void main(String[] args) { // StringBuilder 线程不安全 // StringBuffer:线程安全的 /* *1.继承了 AbstractStringBuilder类 * 2.实现了Serializable,说明StringBuilder对象可以实现串行化(可以进行网络传输,可以保存到文件中 * 3.是一个final类说明不可以进行继承 * 4.StringBuilder的数据仍然是存放在父类的 char[] value字符数组中 * 5.没有堆synchronized关键字,线程不安全 * */ StringBuilder stringBuilder = new StringBuilder(); } }
-
-
Sting、StringBuffer、StringBuilder的对比
-
相关文章
- 01-23StringBuffer和 StringBuilder和包装类
- 01-23Bootstrap的常用类(CSS和布局组件)的总结
- 01-23String、StringBuffer和StringBuilder类的区别
- 01-23StringBuffer类和StringBuilder类
- 01-23常用类:String,StringBuffer,StringBuilder
- 01-23StringBuffer和StringBuilder类
- 01-23Java初学笔记22-【线程、继承Thread类、实现Runnable接口、静态代理模式、进程终止、线程常用方法、用户线程和守护线程、线程同步机制、线程死锁、互斥锁、释放锁】
- 01-23Mybatis常用工具类(二)-- ScriptRunner 和 SqlRunner
- 01-23Python Fixture——通常用来对测试方法、测试函数、测试类和整个测试文件进行初始化或还原测试环境
- 01-23自己编写的Windows字符串类 封装字符串格式转换和常用操作 方便使用