String、StringBuffer、StringBuider的区别

简介: String、StringBuffer、StringBuider的区别

String、StringBuffer、StringBuider的区别
String是不可变的,如果修改了会生成一个新的字符串对象,StringBuffer和StringBuider是可以变的。
StringBuffer是线程安全的,但是效率比较低,StringBuider线程不安全,但是效率高,可以根据不同的应用场景进行选择。

Sring类中的创建方式
1、直接创建 String str = “abc”;
2、public String(),创建一个空白的字符串,不含有任何的内容
String str = new String();//这是一个空的字符串,无内容
3、public String(char[] array),根据字符数组的内容,来创建对应的字符串
char[] charArray = {‘A’,‘B’,‘C’};
String str = new String(charArray);
//ABC
4、public String(byte[] array) ,根据字节数组的内容,来创建对应的字符串
byte[] byteArray = { 97 , 98 , 99 };
String str = new String(byteArray);
//abc

StringBuffer

StringBuffer类的常用方法
public StringBuffer append(String str)
将字符串str追加到StringBuffer的缓存中。
public String toString()
返回一个字符串,将缓存中的字符串内容返回到一个字符串对象中。
public StringBuffer insert(int offset, String str)
在指定位置插入字符串。

public static void main(String[] args) {

    // TODO Auto-generated method stub
    StringBuffer stringBuffer = new StringBuffer("abc");

    stringBuffer.append("def").append("ghi");
    stringBuffer.append("ddd").append("slsfh");

    stringBuffer.insert(3, "0000");
    System.out.println(stringBuffer);
}

1
2
3
4
5
6
7
8
9
10
StringBuilder:
StringBuilder和StringBuffer相似,两个类的构造器和方法基本相同。不同的是,StringBuffer是线程安全的,StringBuiler则没有实现线程安全功能,但是性能略高。因此,在通常情况下,如果需要创建一个内容可变的字符串 对象,应该优先考虑使用StringBuilder类。

public class Test {

public static void main(String[] args) {

    StringBuffer sb = new StringBuffer();
    //追加字符串,append方法
    sb.append("java");//此时sb="java"
    System.out.println("追加后:"+sb);
    //插入操作
    sb.insert(0, "hello ");//在索引是0的位置插入hello,此时 sb = "hello java"
    System.out.println("插入后:"+sb);
    //删除操作
    sb.delete(5, 6);  //此时sb="hellojava"
    System.out.println("删除后:"+sb);
    //反转
    sb.reverse(); //sb="avajolleh"
    System.out.println("反转后:"+sb);
    //length()表示字符串长度
    System.out.println(sb.length());//输出9
    //capacity()表示容量,一般比length()大
    System.out.println(sb.capacity());//输出16
    //setLength():设置长度
    sb.setLength(5);
    System.out.println(sb);
}

}

相关文章
|
22天前
|
安全 Java 测试技术
滚雪球学Java(50):理解Java中String、StringBuilder和StringBuffer的区别与选择
【6月更文挑战第4天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
16 0
滚雪球学Java(50):理解Java中String、StringBuilder和StringBuffer的区别与选择
|
6天前
|
安全
StringBuffer,StringBuilder的区别及其源码分析
StringBuffer,StringBuilder的区别及其源码分析
|
14天前
|
Java
guava Splitter 与java 内置的string的split 方法的区别
guava Splitter 与java 内置的string的split 方法的区别
13 0
|
1月前
|
安全 Java 编译器
Java中String、StringBuilder和StringBuffer的区别
Java中String、StringBuilder和StringBuffer的区别
17 1
|
1月前
|
存储 安全 Java
javaSE-String,StringBuffer和StringBuilder
javaSE-String,StringBuffer和StringBuilder
24 0
|
1月前
|
安全
String、StringBuuffer、StringBuilder三者的区别
String、StringBuuffer、StringBuilder三者的区别
|
1月前
|
缓存 安全 Java
【Java基础】String、StringBuffer和StringBuilder三种字符串对比
【Java基础】String、StringBuffer和StringBuilder三种字符串对比
13 0
|
3天前
|
Java UED
Java中String强转int:一种常见的错误和解决方法
在Java中将非数字字符串转换为整数会导致`NumberFormatException`。要解决这个问题,可以使用`try-catch`捕获异常,正则表达式验证数字格式,或利用异常信息提供错误提示。例如,`Integer.parseInt()`会因遇到非数字字符如`"123abc"`而抛出异常,但通过异常处理或正则`\\d+`可确保安全转换。记得在编程时避免直接强转,以防止程序异常中断。
|
24天前
|
Java 安全 索引
滚雪球学Java(48):面向对象编程中的StringBuffer类详解
【6月更文挑战第2天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
31 5
滚雪球学Java(48):面向对象编程中的StringBuffer类详解
|
2天前
|
Java 数据处理 Apache
探讨Java中判断String类型为空和null的方法
探讨Java中判断String类型为空和null的方法
9 1