当前位置: 首页 > news >正文

Java---StringBuffer类

基本介绍

        java.lang.StringBuffer 代表可变的字符序列,可以对字符内容进行增删

        很多方法与String相同,但StringBuffer是可变长度

        StringBuffer是一个容器

String  VS  StringBuffer

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

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

package com.heima.Hello.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");}
}

StringBuffer 的构造器

        构造方法摘要

StringBuffer()

        构造一个其中不带字符的字符串缓冲区,其初始容量为16个字符。

StringBuffer(CharSequence seq)

        public java.lang.StringBuilder(CharSequence seq)构造一个字符串缓冲区,它包含与指定的 CharSequence 相同的字符

StringBuffer(int capacity)  // capacity[容量]

        构造一个不带字符,但具有指定初始容量的字符串缓冲区,即对 char[] 大小进行指定

StringBuffer(String str)

        构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容

String 和 StringBuffer相互转换

        在开发中,我们经常需要将 String 和 StringBuffer 进行转换

package com.heima.Hello.StringBuffer_;public class StingAndStringBuffer {public static void main(String[] args) {// String -> StringBufferString str = "hello tom";// 方式1 使用构造器//注意:返回的才是StringBuffer对象,对 str 本身没有有影响StringBuffer stringBuffer1 = new StringBuffer(str);// 方式2 使用 append 方法StringBuffer stringBuffer2 = new StringBuffer();stringBuffer2 = stringBuffer2.append(str);// StringBuffer -> StringStringBuffer stringBuffer3 = new StringBuffer("东风快递,使命必达");// 方式1 使用 StringBuffer 提供的 toString 方法String s3 = stringBuffer3.toString();// 方式2 使用构造器来搞定String s4 = new String(stringBuffer3);}
}

StringBuffer 类常见方法

        1) append

package com.heima.Hello.StringBuffer_;public class StringBufferMethod01 {public static void main(String[] args) {StringBuffer s = new StringBuffer("hello");// 增s.append(','); // "hello,"s.append("张三丰");  // "hello,张三丰"s.append("赵敏").append(100).append(true).append(10.5); // "hello,张三丰赵敏100true10.5"System.out.println(s);}
}

        2) delete(start,end)

package com.heima.Hello.StringBuffer_;public class StringBufferMethod01 {public static void main(String[] args) {StringBuffer s = new StringBuffer("hello,张三丰赵敏100true10.5");// 删/** 删除索引为 >= start && <= end 处的字符* 解读: 删除 11~14 的字符 [11,14)*/s.delete(11,14);System.out.println(s); // "hello,张三丰赵敏true10.5"}
}

        3) replace(start , end , string) // 将 start --- end 间的内容替换掉,不含 end

package com.heima.Hello.StringBuffer_;public class StringBufferMethod01 {public static void main(String[] args) {StringBuffer s = new StringBuffer("hello,张三丰赵敏100true10.5");// 改// 解读,使用 周芷若 替换 索引9~11的字符 [9,11)s.replace(9,11,"周芷若");System.out.println(s); // hello,张三丰周芷若100true10.5}
}

        4) indexOf // 查找字串在字符串第 1 次出现的索引,如果找不到,则返回 -1

package com.heima.Hello.StringBuffer_;public class StringBufferMethod01 {public static void main(String[] args) {StringBuffer s = new StringBuffer("hello,张三丰赵敏周芷若true10.5");// 查System.out.println(s.indexOf("张三丰")); // 返回字符串第一次出现的索引System.out.println(s.indexOf("falase")); // 找不到则返回 -1 }
}

        5) insert

package com.heima.Hello.StringBuffer_;public class StringBufferMethod01 {public static void main(String[] args) {StringBuffer s = new StringBuffer("hello,张三丰周芷若true10.5");// 插// 解读,在索引为9的位置插入字符串"赵敏",原来索引为9的内容自动后移s.insert(9,"赵敏");System.out.println(s);}
}

        6)获取长度 length

package com.heima.Hello.StringBuffer_;public class StringBufferMethod01 {public static void main(String[] args) {StringBuffer s = new StringBuffer("hello,张三丰赵敏周芷若true10.5");// 长度// 返回字符串长度System.out.println(s.length()); // 22}
}

StringBuffer 类课堂测试题

package com.heima.Hello.StringBuffer_;public class StringBufferExercose01 {public static void main(String[] args) {String str = null;StringBuffer sb1 = new StringBuffer();sb1.append(str); // 底层调用的是 AbstractStringBuilder 的 appendNullSystem.out.println(sb1.length());  // 4System.out.println(sb1); // null// 看下面的构造器,会抛出NullPointerExceptionStringBuffer sb2 = new StringBuffer(str); // 看底层源骂 super(str.length() + 16);System.out.println(sb2);}
}

http://www.dtcms.com/a/536569.html

相关文章:

  • 【从零开始构建性能测试体系-10】人工智能与性能测试:如何借助AI提升测试效率
  • 网站建设人员要与客户谈什么一篇关于大学网站建设与管理的论文
  • 子洲网站建设制作网站上做网页怎么改图片
  • kafka使用-Producer
  • CUDA实现的点云MLS滤波
  • Spring Framework源码解析——TaskScheduler
  • 【从零开始开发远程桌面连接控制工具】02-服务端实现详解
  • 湖州网站设计公司WordPress博客Vieu主题
  • 国外好看的网站设计国外网站需要备案
  • 福克斯特solo4 2i2 Focusrite solo4 2i2 录制音乐 全民K歌单声道问题
  • 《信息系统项目管理师》案例分析题及解析模拟题8
  • MCU中的HSE(高速外部时钟,High-Speed External)
  • 开发中的英语积累 P9:Dispatch、Multi、Retain、Restore、Yield、Interrupt
  • ViT算法流程——从 原始像素 → 网络输出 logits 的 每一步张量形状、公式、关键代码
  • 前端与移动开发之 CSS vs QSS
  • 上那个网站找手工活做网上项目外包
  • 网站建设项目开发响应式学校网站模板下载
  • CICD之git
  • 零基础从头教学Linux(Day 57)
  • 综合网站推广的含义天津网站建设如何
  • Playwright中Browser的实现类深度解析-Browser方法速查手册
  • 智能指针完全指南
  • 数字阵列雷达(三)——系统工作原理(接收)
  • linux动态库加载方式:dlopen和直接链接.so库的区别?
  • 可克达拉市建设局网站呼和浩特做网站的地方
  • 插入排序:扑克牌式的排序算法!
  • 如何实现简单的HTTP代理服务器
  • vscode断点使用
  • 做自己网站做站长网站模板对seo的影响
  • Rust中的异常处理方式