zoukankan      html  css  js  c++  java
  • StringBuffer类

    java StringBuffer类

    String类的特性

    • String类对象有两种实例化方法
      • 直接赋值:开辟一个堆内存空间,自动入池
      • 构造方法:开辟两块堆内存空间,不会自动入池(intern()手工入池)
    • 任何一个字符串,都是String类的匿名对象
    • 字符串一旦声明则不可改变,可以改变的只是String类对象的引用

    StringBuffer类

    区别:StringBuffer类可以改变字符串中的内容,而String类则无法改变被初始化过的字符串内容(改变的只是String字符串的引用位置)

    append()方法

    • public StringBuffer append()
      • 改动字符串中的内容(添加)
    public class TestDemo {
    	public static void main(String [] args) {
    		// StringBuffer类不可以直接赋值实例化,必须new开辟空间
    		StringBuffer buf = new StringBuffer();
    		// 调用append()方法,向StringBuffer实例化的空间String添加内容
    		buf.append("Hello").append("World").append("!") ;
    		change(buf) ; // 引用传递
    		System.out.println(buf);
    	}
    	public static void change(StringBuffer temp) {
    		temp.append("
    ").append("HUAWEI_nb") ;
    		// 向 字符串 添加 后续字符串(一个换行和一行字符)
    	}
    }
    
    

    通过 StringBuffer 是可以修改的,上述代码则通过 append() 方法来后续添加字符,改变初始后的字符串buf内容

    String和StringBuffer类的比较

    String类 StringBuffer类
    java.lang.Object
    |--java.lang.String
    java.lang.Object
    |-- java.lang.StringBuffer
    public final class String
    extends Object
    implements Serializable, Comparable, CharSequence
    public final class StringBuffer
    extends Object
    implements Serializable, CharSequence

    通过对两个类的继承结构对比发现,都是同一个 CharSequence 接口的子类

    String 转 StringBuffer

    public class TestDemo {
    	public static void main(String [] args) {
    		StringBuffer buf = new StringBuffer("Hello,World!");
    		System.out.println(buf);
    	}
    }
    
    public class TestDemo {
    	public static void main(String [] args) {
    		StringBuffer buf = new StringBuffer();
            buf = append("Hello,World!");
    		System.out.println(buf);
    	}
    }
    

    StringBuffer 转 String

    public class TestDemo {
    	public static void main(String [] args) {
    		StringBuffer buf = new StringBuffer("Hello,World!");
    		String str = buf.toString();
    		System.out.println(str);
    	}
    }
    

    reverse()方法

    • 字符串反转
    public class TestDemo {
    	public static void main(String [] args) {
    		StringBuffer buf = new StringBuffer("Hello,World!");
    		System.out.println(buf.reverse());
    	}
    }
    

    insert()方法

    • 在指定的索引位置增加数据
    public class TestDemo {
    	public static void main(String [] args) {
    		StringBuffer buf = new StringBuffer("Hello,World!");
    		buf.insert(0,"China ").insert(5, "Huawei ");
    		System.out.println(buf);
    	}
    }
    

    delete()方法

    • 删除指定的数据
    public class TestDemo {
    	public static void main(String [] args) {
    		StringBuffer buf = new StringBuffer("Hello,World!");
    		buf.delete(0,3);
    		System.out.println(buf);
    	}
    }
    

    StringBuilder类

    从JDK 1.5以后,增加了新的字符串操作类——StringBuilder

    • 定义结构:

      public final class StringBuilder
      extends Object
      implements Serializable, CharSequence
      

    StringBuffer类和StringBuilder类的定义非常的相似,几乎连类方法也是一样的。

    StringBuilder和StringBuffer类的区别

    • String类内容一旦声明则无法改变,而StringBuffer和StringBuilder类可以改变初始内容。
    • StringBuffer中提供的方法都是同步方法,属于安全的线程操作,而StringBuilder类中的方法都属于异步方法(非线程安全操作)
  • 相关阅读:
    P4374 [USACO18OPEN]Disruption P
    POJ
    Git
    SpringBoot集成RabbitMQ
    GIS类型文件剖析
    SpringBoot全局异常处理
    SpringCloud Feign异常处理
    SpringBoot注解
    Restful风格接口定义
    LOD技术的理解
  • 原文地址:https://www.cnblogs.com/wangyuyang1016/p/11094462.html
Copyright © 2011-2022 走看看