(二)StringBuffer

java.lang.StringBuffer代表可变的字符序列,可以对字符串内容进行增删。很多方法和String相同,但是StringBuffer是可变长度的

StringBuffer是一个容器

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");}
}

String VS. Stringbuffer

(1)String 保存的是字符串常量,里面的值不能更改,每次String类的更新实际上就是更改地址,效率较低//private final char[] value;

(2)StringBuffer保存的是字符串变量,里面的值可以更改,每次StringBuffer的更新实际上可以更新内容,不用每次更新地址,效率较高//char[] value;放在堆

String和StringBuffer相互转换

开发中,常常需要将String和StringBuffer进行转换

Stringbuffer的构造器:

String和StringBuffer的转换:

public class StringAndStringBuffer {public static void main(String[] args) {//看 String——>StringBufferString str = "hello tom";//方式1 使用构造器//注意: 返回的才是StringBuffer对象,对str 本身没有影响StringBuffer stringBuffer = new StringBuffer(str);//方式2 使用的是append方法StringBuffer stringBuffer1 = new StringBuffer();stringBuffer1 = stringBuffer1.append(str);//看看 StringBuffer ->StringStringBuffer stringBuffer3 = new StringBuffer("韩顺平教育");//方式1 使用StringBuffer提供的 toString方法String s = stringBuffer3.toString();//方式2: 使用构造器来搞定String s1 = new String(stringBuffer3);}
}

StringBuffer常用方法:

例题1:

例题2:

public class StringBufferExercise02 {public static void main(String[] args) {/*输入商品名称和商品价格,要求打印效果示例, 使用前面学习的方法完成:商品名   商品价格手机  123,564.59  //比如 价格 3,456,789.88要求:价格的小数点前面每三位用逗号隔开, 在输出。思路分析1. 定义一个Scanner 对象,接收用户输入的 价格(String)2. 希望使用到 StringBuffer的 insert ,需要将 String 转成 StringBuffer3. 然后使用相关方法进行字符串的处理代码实现*///new Scanner(System.in)String price = "8123564.59";StringBuffer sb = new StringBuffer(price);//先完成一个最简单的实现123,564.59//找到小数点的索引,然后在该位置的前3位,插入,即可
//        int i = sb.lastIndexOf(".");
//        sb = sb.insert(i - 3, ",");//上面的两步需要做一个循环处理,才是正确的for (int i = sb.lastIndexOf(".") - 3; i > 0; i -= 3) {sb = sb.insert(i, ",");}System.out.println(sb);//8,123,564.59}
}

Java String StringBuffer StringBuilder相关推荐

  1. `java`学习笔记(十二)`Java`--`String``StringBuffer``StringBuilder`

    Java–String&&StringBuffer&&StringBuilder 文章目录 `Java`--`String`&&`StringBuffe ...

  2. 重温java中的String,StringBuffer,StringBuilder类

    不论什么一个系统在开发的过程中, 相信都不会缺少对字符串的处理. 在 java 语言中, 用来处理字符串的的类经常使用的有 3 个: String.StringBuffer.StringBuilder ...

  3. 浅谈 Java 字符串(String, StringBuffer, StringBuilder)

    我们先要记住三者的特征: String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 一.定义 查看 API 会发现,String ...

  4. java中 String StringBuffer StringBuilder的区别

    * String类是不可变类,只要对String进行修改,都会导致新的对象生成. * StringBuffer和StringBuilder都是可变类,任何对字符串的改变都不会产生新的对象. 在实际使用 ...

  5. Java中的String,StringBuffer,StringBuilder有什么区别?

    相信有很多同学都是经常使用String的,或者也或多或少的听说过StringBuffer,StringBuilder,那么在经常遇见的面试题中(标题),到底这三个的区别是什么呢?让我们来一探究竟! S ...

  6. String, StringBuffer,StringBuilder

    String, StringBuffer,StringBuilder的区别 java中String.StringBuffer.StringBuilder是编程中经常使用的字符串类,都实现了CharSe ...

  7. 2019-7-9 [JavaSE] String ,StringBuffer,StringBuilder比较 装箱和拆箱 日期类 正则

    文章目录 1.StringBuffer类 方法: 利用StringBuffer开头与结束的时间计算: String ,StringBuffer,StringBuilder比较 2.装箱和拆箱 3.日期 ...

  8. String StringBuffer StringBuilder区别与联系

    String     StringBuffer     StringBuilder String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量 ...

  9. String StringBuffer StringBuilder的区别

    简单的事情做到极致也是一种能力. 首先,说一下目前我还没进行整理的情况下,我的理解: String 不可修改 修改后相当于又新创建创建一个字符串 比如: String a = "abc&qu ...

最新文章

  1. sosdp 二进制子集的贡献
  2. 23种设计模式C++源码与UML实现--命令模式
  3. myeclipse启动错误:org.eclipse.swt.SWTError: No more handles
  4. Java面向对象编程学习
  5. windows平台下vlc编译
  6. OpenCV辅助对象(help objects)(5)_DataType
  7. android遍历图片,Android获取手机所有图片并显示
  8. 【hadoop各个节点的意思】
  9. Pandas 基础(4) - 读/写 Excel 和 CSV 文件
  10. Cisco实例1—构建高可用性DM×××网络2—方案设计
  11. 计算机论文格式要求吗,论文格式
  12. 学地质灾害还是学计算机专业,地质灾害与防治技术专科专业介绍
  13. 大数据安全与隐私保护的问题及对策
  14. IDEA怎么查看现在的项目使用的JDK版本? 2016年4月19日22:51
  15. 什么是集成测试?集成测试方法有哪些?
  16. 真知灼见|客户视图与工作台:金融行业呼叫中心领域驱动设计
  17. 在Vue单文件组件的template标签上使用v-if不生效的原因
  18. 在Windows端安装kafka 提示错误: 找不到或无法加载主类 的解决方案
  19. 从“我爱你”到“我爱钱”
  20. 我的2018年竞赛之路总结

热门文章

  1. 如何给电脑选内存条加内存条
  2. Java:用Java程序打印出所有的 “水仙花数 ”。
  3. 【vue axios 跨域】cookie、origin等一步步递进的跨域踩坑 已解决
  4. 大数据用户画像技术原理和实践
  5. 从租车到卖二手车,一嗨租车要和瓜子正面“掰头”?
  6. (Java实现) 图的m着色问题
  7. 对web及小程序存储技术的碎片理解
  8. JAVA 攻城狮 第一天
  9. 阿里云峰会现场探班,“一云多芯”技术强在何处
  10. FT232R假芯片之后我们怎么办