java--常用类--StingBuffer类和StringBuilder类
2021/7/4 20:22:07
本文主要是介绍java--常用类--StingBuffer类和StringBuilder类,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
- 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的对比
-
这篇关于java--常用类--StingBuffer类和StringBuilder类的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南