常用类库——StringBuffer类

掌握目标:

  1,掌握StringBuffer与String的区别。

  2,掌握StringBuffer常用方法。

  3,掌握StringBuffer实际应用。

1,认识StringBuffer.

  StringBuffer是使用缓冲区的,本身也是操作字符串的,但是与String类不同,String类的内容一旦声明则不可改变,改变的只是地址指向。而StringBuffer是可以改变的

  对于StringBuffer而言,本身是一个具体的操作类,所以不能像String类那样直接赋值的方式进行对象实例化,必须通过构造方法完成。

字符串连接

  String用“+”号完成字符串连接,而StringBuffer用“append()”方法。

  

实例操作:字符串连接(append(String s))

  在StringBuffer中提供了一系列append()方法,下面观察其使用,(一定要注意,这些方法都会返回StringBuffer类的实例化对象)。

public class StringBufferDemo01{
    public static void main(String args[]){
        StringBuffer buf = new StringBuffer() ;    // 声明StringBuffer对象
        buf.append("Hello ") ;                    // 向StringBuffer中添加内容
        buf.append("World").append("!!!") ;        // 可以连续调用append()方法
        buf.append("\n") ;                        // 添加一个转义字符
        buf.append("数字 = ").append(1).append("\n") ;    // 添加数字
        buf.append("字符 = ").append(‘C‘).append("\n");     // 添加字符
        buf.append("布尔 = ").append(true) ;    // 添加布尔值
        System.out.println(buf) ;            // 直接输出对象,调用toString()
    }
};

  结果:

Hello World!!!
数字 = 1
字符 = C
布尔 = true

  继续验证StringBuffer内容是可以修改的,通过引用传递的方式完成。

package Thread1;
public class demo1{
    public static void main(String args[]){
        StringBuffer buf = new StringBuffer() ;    // 声明StringBuffer对象
        buf.append("Hello ") ;
        fun(buf) ;        // 传递StringBuffer内容 
        System.out.println(buf) ;    // 打印内容
    }
    public static void fun(StringBuffer s){        // 接收StringBuffer引用
        s.append("MLDN ").append("LiXingHua") ;    // 修改StringBuffer的内容
    }
};

  允许结果:

Hello MLDN LiXingHua

  从以上代码证明StringBuffer是可以改变的。

实例操作二:在任意位置处为StringBuffer添加内容。

  可以直接使用insert()方法添加内容: public StringBuffer insert(int OffSet,boolean  b);

package Thread1;
public class demo1{
    public static void main(String args[]){
        StringBuffer buf = new StringBuffer() ;    // 声明StringBuffer对象
        buf.append("World!!") ;        // 添加内容
        buf.insert(0,"Hello ") ;        // 在第一个内容之前添加内容
        System.out.println(buf) ;
        buf.insert(buf.length(),"MLDN~") ;    // 在最后添加内容
        System.out.println(buf) ;
    }
};

  运行结果:

Hello World!!
Hello World!!MLDN~

  在StringBuffer中与Stirng类非处相似的是,都可以使用length()方法求出字符串长度

实例操作三:字符串反转操作:public StringBuffer reverse()

  直接使用reverse()方法可以完成反转功能,public StringBuffer reverse()。

public class StringBufferDemo04{
    public static void main(String args[]){
        StringBuffer buf = new StringBuffer() ;    // 声明StringBuffer对象
        buf.append("World!!") ;        // 添加内容
        buf.insert(0,"Hello ") ;        // 在第一个内容之前添加内容
        String str = buf.reverse().toString() ;    // 将内容反转后变为String类型
        System.out.println(str) ;        // 将内容输出
    }
};

  运行结果:

!!dlroW olleH

  对于上文红色部分,有两种方式:

  一:讲内容反转后,转换成String类型,赋值给String类型的字符串。

     String str = buf.reverse().toString() ; 

  二,讲内容反转后,赋值给StringBuffer类型的对象。

    StringBuffer str = buf.reverse() ;

实例操作四:替换指定范围的内容

  在StringBuffer中也存在replace()方法,也可以使用此方法对指定内容替换。

  public StringBuffer replace(int start,int end,String str);

public class StringBufferDemo05{
    public static void main(String args[]){
        StringBuffer buf = new StringBuffer() ;    // 声明StringBuffer对象
        buf.append("Hello ").append("World!!") ;        // 向StringBuffer添加内容
        buf.replace(6,11,"LiXingHua") ;        // 将world的内容替换
        System.out.println("内容替换之后的结果:" + buf) ;    // 输出内容
    }
};

  运行结果:

内容替换之后的结果:Hello LiXingHua!!

实例操作五:字符串截取

  通过subString()直接从StringBuffer 中指定范围内截取内容。public String substring(int start,int end)

  

package Thread1;
public class demo1{
    public static void main(String args[]){
        StringBuffer buf = new StringBuffer() ;    // 声明StringBuffer对象
        buf.append("Hello ").append("World!!") ;        // 向StringBuffer添加内容
        buf.replace(6,11,"LiXingHua") ;        // 将world的内容替换
        String str = buf.substring(6,15) ;    // 截取指定范围的内容
        System.out.println("内容替换之后的结果:" + str) ;    // 输出内容
    }
};

  运行结果:

内容替换之后的结果:LiXingHua

实例操作六:删除指定范围内容:delet(int start,int end);

  因为StringBuffer的内容是可以修改的,所以可以用delet()删除指定范围内容:public string delete(int start,int end)

package Thread1;
public class demo1{
    public static void main(String args[]){
        StringBuffer buf = new StringBuffer() ;    // 声明StringBuffer对象
        buf.append("Hello ").append("World!!") ;        // 向StringBuffer添加内容
        buf.replace(6,11,"LiXingHua") ;        // 将world的内容替换
        String str = buf.delete(6,15).toString() ;    // 删除指定范围中的内容
        System.out.println("删除之后的结果:" + str) ;    // 输出内容
    }
};

  运行结果:

删除之后的结果:Hello !!

实例操作七:查找指定的内容是否存在:indexof()

  在String中,可以使用indexof()方法进行查找,在StringBuffer中可以继续使用这个方法。此方法如果找到了,返回位置,否则返回-1

public class StringBufferDemo08{
    public static void main(String args[]){
        StringBuffer buf = new StringBuffer() ;    // 声明StringBuffer对象
        buf.append("Hello ").append("World!!") ;        // 向StringBuffer添加内容
        if(buf.indexOf("World")==-1){
            System.out.println("没有查找到指定的内容") ;
        }else{    // 不为-1表示查找到内容
            System.out.println("可以查找到指定的内容,位置在第"+buf.indexOf("World")) ;
        }
    }
};

运行结果:

可以查找到指定的内容,位置在第6

  以上的方法对于String类也是存在的,使用的时候可以根据DOC文档查看即可。

StringBuffer的应用

  观察以下代码,咱们之前已经在String中介绍过了。

public class StringBufferDemo09{
    public static void main(String args[]){
        String str1 = "LiXingHua" ;
        for(int i=0;i<100;i++){
            str1 += i ;        // 不断修改String的内存引用,性能低
        }
        System.out.println(str1) ;
    }
};

  以上操作方法因为频繁修改字符串的内容,所以使用String是不合理的,最好的做法是使用StringBuffer。

public class StringBufferDemo10{
    public static void main(String args[]){
        StringBuffer buf = new StringBuffer() ;
        buf.append("LiXingHua") ;
        for(int i=0;i<100;i++){
            buf.append(i);        // StringBuffer可以修改,性能高
        }
        System.out.println(buf) ;
    }
};

  对于StringBuffer而言,在频繁修改字符串的时候,性能更高。

总结

  凡是要频繁修改字符串内容的时候,都要使用StringBuffer完成,而且StringBuffer也提供了一些String类没有的方法,比如delete(),insert()。

时间: 2024-10-02 07:39:57

常用类库——StringBuffer类的相关文章

(十)常用类库----数值类、字符串类

类库:包含一堆类的方法和常量,便于我们直接调用 (1)数值类Numeric 基类Numeric包含两个子类Integer(整数)和Float(浮点数) 其中Integer(整数)又可以分为两个子类Fixnum(普通整数)和Bignum(大整数) 记住整数和浮点数就行,普通整数和大整数则系统会自动转换 #类型转换puts 1.2.to_iputs 1puts 1.to_fputs "3.2gg".to_iputs "4.55sss".to_f puts 1.5.rou

Java常用类库之StringBuilder与StringBuffer

String与StringBuffer与StringBuilder的比较 String的内容一旦声明则不可改变,如果改变,则改变的肯定是String的引用地址. StringBuffer则是有个字符缓冲区,所有的操作都是对字符缓冲区中操作.与StringBuilder类似. 1. 在执行速度方面的比较:StringBuilder > StringBuffer 2. StringBuffer与StringBuilder,他们是字符串变量,是可改变的对象,每当我们用它们对字符串做操作时,实际上是在一

JavaSE入门学习29:Java常用类之StringBuffer类和StringBuilder类

一StringBuilder类 (1)认识StringBuilder类 在Java中,除了可以使用String类来存储字符串,还可以使用StringBuilder类或 StringBuffer类存储字符串,在需 要频繁对字符串进行修改操作时使用StringBuilder的效率比String要高. String 类具有是不可变性.如: 运行结果: 从运行结果中我们可以看到,程序运行时会额外创建一个对象,保存 "helloworld".当频繁操作字符串时,就会额 外产生很多临时变量.使用S

JAVA学习第三十一课(常用对象API)- StringBuffer类&amp;&amp;StringBuilder类

StringBuffer类 字符串的组成原理就是通过该类实现的 StringBuffer可以对字符串内容进行增删 StringBuffer是一个容器 很多方法和String相同 一.特点 StringBuffer字符串缓冲区,用于存放数据的容器 1.可变长度的 2.可以存储不同的数据类型 3.最终要转成字符串进行使用 4.对字符串进行修改 容器的特点: 1.添加  append(data) insert(index,data); 2.删除 StringBuffer delete(int star

【java】String类和StringBuffer类常用操作

String类是字符串常量,是不可更改的常量.而StringBuffer是字符串变量,它的对象是可以扩充和修改的.StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类.所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入.删除等操作,使用StringBuffer要更加适合一些. String类主要方法的使用一.创建并初始化字符串: String s = "hello!"; //使用字符串常量直接初始化 String(); //使用构造方法

017_常用API_String类和StringBuffer类

1.String类 (1)字符串对象   ①字符串是一个特殊的对象,字符串一旦初始化就不可以被改变. ②字符串缓冲区支持可变的字符串.因为 String 对象是不可变的,所以可以共享 ③String类中的equals()方法复写了Object类中的内容,其实就是比较字符串内容,而不是比较对象引用. public class StringDemo { public static void main(String[] args) { // TODO Auto-generated method stu

常用类(Scanner类、String类、StringBuffer类)

Scanner类 概述??录入字符串的方法(默认) hasNextXxx()方法与nextXxx()方法示例??以int类型为例,其他类型用类似的方法注意:这块得导包import java.util.Scanner和import java.io.InputStream两个. 获取数据出现的小问题演示代码问题:输入整数完之后,没有再输入字符串,直接打印了出来.原因:当录入整数后,敲了一个回车换行,那么sc.nextLine就会直接把回车换行当做字符串录入.建议后面直接用sc.next就行. 示例:

Java 类库和常用类库

Java 类库概念: Java 的应用程序接口 (API) 以包的形式来组织,每个包提供了大量的相关类.接口和异常处理类,这些包的集合就是 Java 的类库 包名以 Java 开始的包是 Java 核心包 (Java Core Package) : 包名以 Javax 开始的包是 Java 扩展包 (Java Extension Package) ,例如 javax.swing 包: 常用的 Java 核心包 (Java Core Package) 1.       java.lang     

[JAVA_开课吧资源]第三周 常用类库、异常处理

主题一 常用类库 » 类库中常用的包 Java类库中的类和接口大多封装在特定的包里,每个包具有自己的功能. [请点击查看更多内容 转自CSDN博客XXX的专栏] » Object类的一些常用方法 hashCode:public int hashCode()返回该对象的哈希码值.支持该方法是为哈希表提供一些优点,例如,java.util.Hashtable 提供的哈希表 equals:public boolean equals(Object obj)指示某个其他对象是否与此对象“相等” toStr