StringBuffer类

在Java中String类不适合使用于频繁修改字符串的操作上(因为其字符串常量一旦声明则不可改变,只能改变字符串对象,改变的是其内存地址的指向),所以我们可以使用StringBuffer类方便用户进行内容的修改。
例:观察StringBuffer类的使用

package Project.Study.StringBufferClass;public class Test1 {public static void main(String []args){//String类可以直接赋值,但是StringBuffer类不行StringBuffer buf=new StringBuffer(); //实例化StringBuffer类对象buf.append("Hello ").append("World").append("!!!");   //append()方法和String类的“+”作用类似change(buf);                           //引用传递System.out.println(buf);}public static void change(StringBuffer temp){//接收StringBuffer引用temp.append("\n").append("Hi").append("!!!");//修改内容}
}
//结果:
//Hello World!!!
//Hi!!!


我们可以发现String类和StringBuffer类都是CharSequence接口的子类,也就是说这两个类的对象都可以利用自动向上转型的操作为CharSequence接口实例化。

例:

package Project.Study.StringBufferClass;public class Test2 {public static void main(String []args){CharSequence seq="Hello World!!!";//将String类的实例化对象向上转型为CharSequence接口对象System.out.println(seq);    //String类覆写的toString()}
}
//结果:
//Hello World!!!

需要注意的是,虽然String和StringBuffer类都属于CharSequence接口的子类,但是这两个类对象是不能直接转换的。

一:将String类转换为StringBuffer类对象

1.利用StringBuffer类的构造方法(public StringBuffer(String str))

例:

package Project.Study.StringBufferClass;public class Test2 {public static void main(String []args){StringBuffer buf=new StringBuffer("Hello World!!!");//利用该构造方法可以将传递进来的String类对象实例化为StringBuffer类对象System.out.println(buf);}
}
//结果:
//Hello World!!!

2.利用StringBuffer类的append()方法(public StringBuffer append(String str))

例:

package Project.Study.StringBufferClass;public class Test2 {public static void main(String []args){StringBuffer buf=new StringBuffer();buf.append("Hello World!!!");      //String变为StringBufferSystem.out.println(buf);}
}
//结果:
//Hello World!!!

二.将String Buffer类变为String

1.利用toString()方法可以将StringBuffer转换为String

例:

package Project.Study.StringBufferClass;public class Test3 {public static void main(String []args){StringBuffer buf=new StringBuffer("Hello World!!!");    //String变为StringBufferString str=buf.toString();                              //任何类都具备toString()方法System.out.println(str);}
}
//结果:
//Hello World!!!

事实上所以的类中都会继承Object类的toString()方法,所以所有的类对象都可以转换为String类对象。

2.利用String类的构造方法(public String(StringBuffer buffer))实现StringBuffer与String的转换

例:

package Project.Study.StringBufferClass;public class Test4 {public static void main(String[]args){StringBuffer buf=new StringBuffer("Hello World!!!");    //String变为StringBufferString str=new String(buf);          //String类构造,开辟新内存System.out.println(str);}
}
//结果:
//Hello World!!!

三.由于String与StringBuffer都表示字符串,所以在String类里面也提供了一个和StringBuffer比较的方法:public boolean contentEquals(StringBuffer sb)

package Project.Study.StringBufferClass;public class Test5 {public static void main(String[]args){StringBuffer buf=new StringBuffer("Hello");System.out.println("Hello".contentEquals(buf));}
}
//结果:
//true

注意:此方法比较时会区分大小写

StringBuffer类常用的操作方法

No. 方法 类型 描述
1 public StringBuffer append(数据类型变量) 普通 数据追加操作
2 public StringBuffer reverse() 普通 字符串反转操作
3 public StringBuffer insert(int offset,数据类型变量) 普通 在指定位置追加内容
4 public StringBuffer delete(int start,int end) 普通 删除指定索引范围的内容

例:字符串反转操作

package Project.Study.StringBufferClass;public class Test6 {public static void main(String[]args){StringBuffer buf=new StringBuffer("Hello World");System.out.println(buf.reverse());                 //使用reverse()方法反转字符串}
}
//结果:
//dlroW olleH

例:在指定索引位置增加数据

package Project.Study.StringBufferClass;public class Test7 {public static void main(String[]args){StringBuffer buf=new StringBuffer("Hello");//首先在最前面加上字符串,然后在指定位置再追加字符串buf.insert(0,"Now!").insert(9," World");System.out.println(buf);}
}
//结果:
//Now!Hello World

例:删除部分数据

package Project.Study.StringBufferClass;public class Test8 {public static void main(String[]args){StringBuffer buf=new StringBuffer("Hello World!!!");System.out.println(buf.delete(5,11));}
}
//结果:
//Hello!!!

Java学习总结:31(StringBuffer类)相关推荐

  1. java工具类应该抛异常吗,java学习阶段一 工具类(异常)

    java学习阶段一 工具类(异常) 介绍 异常:运行期间出现的错误 背离程序本身意图的表现 基本知识 异常的分类 根类 Throwable Error 程序无法处理的错误 表示运行应用程序中教严重的问 ...

  2. java学习笔记(十)----String类和StringBuffer类

    ***String类和StringBuffer类 -------------------------- String类对象中的内容一旦被初始化就不能再改变 StringBuffer类用于封装内容可以改 ...

  3. Java 知识点整理-7.StringBuffer类+冒泡排序+选择排序+二分法+Arrays类+基本数据类型的包装类

    1.StringBuffer类概述:线程安全的可变字符序列,一个类似于String的字符串缓冲区,但不能修改(不能像String那样用加号与其他类型数据连接),但通过某些方法调用可以改变该序列的长度和 ...

  4. java学习笔记7--抽象类与抽象方法

    接着前面的学习: java学习笔记6--类的继承.Object类 java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) jav ...

  5. java 字符串缓冲区_详解Java中字符串缓冲区StringBuffer类的使用

    StringBuffer 是一个线程安全的可变的字符序列.它继承于AbstractStringBuilder,实现了CharSequence接口. StringBuilder 也是继承于Abstrac ...

  6. Java学习总结3——枚举类和反射机制

    Java枚举类和反射机制 一.Java枚举类(Enum): 在某些情况下,一个类的对象是有限且固定的,对于这种对象的实例有限且固定的类,在 Java 中被称为枚举类(Enum):枚举类是为了提高代码可 ...

  7. Java学习笔记Day06 工具类及常用算法

    第六章 工具类及常用算法 文章目录 第六章 工具类及常用算法 Java语言基础类 Java基础类库 Object类 概述 toString方法 方法摘要 覆盖重写 equals方法 方法摘要 默认地址 ...

  8. 21天学通Java学习笔记-Day11(常用类)

    java 常用类(重点): String 类: String 类代表字符串.创建以后不能更变. public class tests { public static void main(String[ ...

  9. 【Java学习】Font字体类的用法介绍

    一.Font类简介 Font类是用于设置图形用户界面上的字体样式的,包括字体类型(例如宋体.仿宋.Times New Roman等).字体风格(例如斜体字.加粗等).以及字号大小. 二.Font类的引 ...

最新文章

  1. SpringBoot rest映射及源码解析
  2. SOL注入——基干联合查询的POST注入(四)
  3. ChaosBlade 发布对 C++ 应用混沌实验的支持
  4. Visual C#中父窗口和子窗口之间实现控件互操作
  5. AutoPager的简单实现
  6. 深度学习机器72小时自学国际象棋达到大师水平
  7. linux js脚本无法响应,执行Linux shell脚本时出错
  8. SpringBoot配置参数绑定@ConfigurationProperties@Value
  9. 如何将程序下载到单片机
  10. uniapp引入阿里巴巴矢量图标库
  11. Linux服务器上修改深度学习代码
  12. 2021年下半年软件设计师下午真题及答案解析
  13. 3、查询省会(Python实现多行输入,以回车结束输入)
  14. 理解Python中的RingBuffer环形缓冲区
  15. git reset --hard HEAD~X误删恢复操作
  16. Jquery分页之(上一页,下一页)
  17. 5款常用的html5游戏引擎以及优缺点分析
  18. 移动代理服务器 Mobile Agent Server(MAS)
  19. 【[第一次写博客]Uda课程中的P控制器实现说明】
  20. CXXNET 安装教程

热门文章

  1. Vue 监听路由变化的三种方式
  2. 在Ubuntu 16.04.3 LTS上运行go install出错的问题
  3. Django 数据库
  4. 连接惠普打印机(通过WIFI)
  5. getURLParameters - 网址参数
  6. struts2中 ServletActionContext与ActionContext区别
  7. Windows下Redis如何永久更改密码
  8. 任务二:1、选择器 2、连接集中状态的顺序 3、浮动的用发和原理 4、盒模型在IE和Google等不同浏览器的区别与联系...
  9. Appium学习笔记2_Android获取元素篇
  10. springboot集成logback日志 通用logback.xml模板详解