详解Java中StringBuffer类常用方法_java

String是不变类,用String修改字符串会新建一个String对象,如果频繁的修改,将会产生很多的String对象,开销很大.因此java提供了一个StringBuffer类,这个类在修改字符串方面的效率比String高了很多。
在java中有3个类来负责字符的操作。

  •   1.Character 是进行单个字符操作的,
  •   2.String 对一串字符进行操作,不可变类。
  •   3.StringBuffer 也是对一串字符进行操作,但是可变类。
public class UsingStringBuffer {
  /**
   * 查找匹配字符串
   */
  public static void testFindStr() {
    StringBuffer sb = new StringBuffer();
    sb.append("This is a StringBuffer");
    // 返回子字符串在字符串中最先出现的位置,如果不存在,返回负数
    System.out.println("sb.indexOf(\"is\")=" + sb.indexOf("is"));
    // 给indexOf方法设置参数,指定匹配的起始位置
    System.out.println("sb.indexOf(\"is\")=" + sb.indexOf("is", 3));
    // 返回子字符串在字符串中最后出现的位置,如果不存在,返回负数
    System.out.println("sb.lastIndexOf(\"is\") = " + sb.lastIndexOf("is"));
    // 给lastIndexOf方法设置参数,指定匹配的结束位置
    System.out.println("sb.lastIndexOf(\"is\", 1) = "
        + sb.lastIndexOf("is", 1));
  } 

  /**
   * 截取字符串
   */
  public static void testSubStr() {
    StringBuffer sb = new StringBuffer();
    sb.append("This is a StringBuffer");
    // 默认的终止位置为字符串的末尾
    System.out.print("sb.substring(4)=" + sb.substring(4));
    // substring方法截取字符串,可以指定截取的起始位置和终止位置
    System.out.print("sb.substring(4,9)=" + sb.substring(4, 9));
  } 

  /**
   * 获取字符串中某个位置的字符
   */
  public static void testCharAtStr() {
    StringBuffer sb = new StringBuffer("This is a StringBuffer");
    System.out.println(sb.charAt(sb.length() - 1));
  } 

  /**
   * 添加各种类型的数据到字符串的尾部
   */
  public static void testAppend() {
    StringBuffer sb = new StringBuffer("This is a StringBuffer!");
    sb.append(1.23f);
    System.out.println(sb.toString());
  } 

  /**
   * 删除字符串中的数据
   */
  public static void testDelete() {
    StringBuffer sb = new StringBuffer("This is a StringBuffer!");
    sb.delete(0, 5);
    sb.deleteCharAt(sb.length() - 1);
    System.out.println(sb.toString());
  } 

  /**
   * 向字符串中插入各种类型的数据
   */
  public static void testInsert() {
    StringBuffer sb = new StringBuffer("This is a StringBuffer!");
    // 能够在指定位置插入字符、字符数组、字符串以及各种数字和布尔值
    sb.insert(2, 'W');
    sb.insert(3, new char[] { 'A', 'B', 'C' });
    sb.insert(8, "abc");
    sb.insert(2, 3);
    sb.insert(3, 2.3f);
    sb.insert(6, 3.75d);
    sb.insert(5, 9843L);
    sb.insert(2, true);
    System.out.println("testInsert: " + sb.toString());
  } 

  /**
   * 替换字符串中的某些字符
   */
  public static void testReplace() {
    StringBuffer sb = new StringBuffer("This is a StringBuffer!");
    // 将字符串中某段字符替换成另一个字符串
    sb.replace(10, sb.length(), "Integer");
    System.out.println("testReplace: " + sb.toString());
  } 

  /**
   * 将字符串倒序
   */
  public static void reverseStr() {
    StringBuffer sb = new StringBuffer("This is a StringBuffer!");
    System.out.println(sb.reverse()); // reverse方法将字符串倒序
  }
}

小结:
StringBuffer不是不变类,在修改字符串内容时,不会创建新的对象,因此,它比String类更适合修改字符串;
StringBuffer类没有提供同String一样的toCharArray方法;
StringBuffer类的replace方法同String类的replace方法不同,它的replace方法有三个参数,第一个参数指定被替换子串的起始位置,第二个参数指定被替换子串的终止位置,第三个参数指定新子串。

以上就是本文的全部内容,希望对大家的学习有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
stringbuffer
stringbuffer常用方法、java stringbuffer、java清空stringbuffer、java中stringbuffer、java中的stringbuffer,以便于您获取更多的相关知识。

时间: 2024-09-15 16:44:11

详解Java中StringBuffer类常用方法_java的相关文章

详解Java中final的用法_java

概念 final 具有"不可改变的"的含义,可以修饰 非抽象类.非抽象成员方法和变量. 用 final 修饰的类不能被继承,没有子类. 用 final 修饰的方法不能被子类的方法覆盖(重写). 用 final 修饰的变量表示常量,只能被赋一次值(声明变量的时候). 注: final 不能用来修饰构造方法,因为"方法覆盖"这一概念仅适用于类的成员方法,而不适用于类的构造方法,父类的构造方法和子类的构造方法之间不存在覆盖的关系,因此用final修饰构造方法没有任何意义.

实例详解Java中ThreadLocal内存泄露_java

案例与分析 问题背景 在 Tomcat 中,下面的代码都在 webapp 内,会导致WebappClassLoader泄漏,无法被回收. public class MyCounter { private int count = 0; public void increment() { count++; } public int getCount() { return count; } } public class MyThreadLocal extends ThreadLocal<MyCount

详解Java中的正则表达式

详解Java中的正则表达式,并列出常用的正则表达式语法和一些常用的场景. 判断一个字符串是否是由数字组成: 当不使用正则表达式的时候的实现代码: public class RegexDemo01 { public static void main(String[] args) { String s = "23432324"; char c[] = s.toCharArray();//将字符串转换成字符数组 for (int i = 0; i < c.length; i++) {

详解java中的Collections类_java

一般来说课本上的数据结构包括数组.单链表.堆栈.树.图.我这里所指的数据结构,是一个怎么表示一个对象的问题,有时候,单单一个变量声明不堪大用,比如int,String,double甚至一维数组.二维数组无法完全表达你要表达的东西,而定义一个类Class有太过麻烦,这时候,你可以考虑一下用Java中的Collections类.使用Collections类,必须在文件头声明import java.util.*; 一.动态.有序.可变大小的一维数组Vector与ArrayList  Collectio

详解Java中的final关键字的使用_java

final含义 final是Java中的一个保留关键字,可以声明成员变量.方法和类.一旦你将引用声明为final类型,你将不能再改变这个引用了.编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误.final变量 凡是对成员变量或者本地变量(在方法中的或者代码块中的变量称为本地变量)声明为final的都叫做final变量.下面是final修饰变量的例子: final int constValue = 1; // constValue = 2; The final local va

详解Java中的指针、引用及对象的clone

对象|详解 Java语言的一个优点就是取消了指针的概念,但也导致了许多程序员在编程中常常忽略了对象与引用的区别,本文会试图澄清这一概念.并且由于Java不能通过简单的赋值来解决对象复制的问题,在开发过程中,也常常要要应用clone()方法来复制对象.本文会让你了解什么是影子clone与深度clone,认识它们的区别.优点及缺点.看到这个标题,是不是有点困惑:Java语言明确说明取消了指针,因为指针往往是在带来方便的同时也是导致代码不安全的根源,同时也会使程序的变得非常复杂难以理解,滥用指针写成的

详解Java中的File文件类以及FileDescriptor文件描述类_java

File File 是"文件"和"目录路径名"的抽象表示形式. File 直接继承于Object,实现了Serializable接口和Comparable接口.实现Serializable接口,意味着File对象支持序列化操作.而实现Comparable接口,意味着File对象之间可以比较大小:File能直接被存储在有序集合(如TreeSet.TreeMap中).1. 新建目录的常用方法方法1:根据相对路径新建目录. 示例代码如下(在当前路径下新建目录"d

详解Java中用于国际化的locale类_java

1. Locale 介绍Locale 表示地区.每一个Locale对象都代表了一个特定的地理.政治和文化地区. 在操作 Date, Calendar等表示日期/时间的对象时,经常会用到:因为不同的区域,时间表示方式都不同. 下面说说Locale对象的3种常用创建方式.(1)获取默认的Locale使用方法: Locale locale = Locale.getDefault() (2) 直接使用Locale的静态对象Locale.java中提供了以下静态对象 public static final

详解Java中的时区类TimeZone的用法_java

一.TimeZone 简介TimeZone 表示时区偏移量,也可以计算夏令时. 在操作 Date, Calendar等表示日期/时间的对象时,经常会用到TimeZone:因为不同的时区,时间不同. 下面说说TimeZone对象的 2种常用创建方式.1.获取默认的TimeZone对象使用方法: TimeZone tz = TimeZone.getDefault() 2.使用 getTimeZone(String id) 方法获取TimeZone对象使用方法: // 获取 "GMT+08:00&qu