StringBuffer类详解

StringBuffer

定义

1.java.lang.StringBuffer代表可变的字符序列,可以对字符串内容进行增删

2.很多方法与String相同,但StringBuffer是可变长度的。
3.StringBuffer是一个容器。

String和StringBuffer的不同

1.String保存的是字符串常量,里面的值不嫩更改,每次String的更新实际上就是更改地址,效率较低

String类的常量定义: private final char value[];

2.StringBuffer保存的是字符串变量,里面的值可以更改,每次StringBuffer的更新实际上可以更新内容,不用每次更新地址,效率较高

StringBuffer字符串变量定义: char][] value;放在堆

String和StringBuffer的互相转换
package string;

public class StringBufer01 {
    public static void main(String[] args) {
        //String --> StringBuffer
        String str = "sad";
        //1.使用构造器
        StringBuffer stringBuffer = new StringBuffer(str);
        System.out.println(stringBuffer);
        //2.使用append方法
        StringBuffer stringBuffer1 = new StringBuffer();
        stringBuffer1 = stringBuffer1.append(str);

        //StringBuffer ---> String
        StringBuffer stringBuffer2 = new StringBuffer("你好");
        //1。利用StringBuffer对象的toString方法
        String str2 = stringBuffer2.toString();
        System.out.println(str2);
        //2.利用构造器
        String str3 = new String(stringBuffer2);
        System.out.println(str3);

    }
}
StringBuffer类的常用方法

1.增 append

2.删delete(start,end)

3.改replace(start,end,String)

4.查indexOf 查找字符串第一次出现的位置,找不到返回-1

5.插入 insert

6.获取长度length

package string;

public class StringBuffer02 {
    public static void main(String[] args) {
        StringBuffer stringBuffer = new StringBuffer("hello,java");
        System.out.println(stringBuffer);
        //1.增 append
        stringBuffer.append(",I am wulian");
        System.out.println(stringBuffer);
        //2.删delete(start,end)
        stringBuffer.delete(0,2);
        System.out.println(stringBuffer);
        //3.改replace(start,end,String)
        stringBuffer.replace(0,3,"hhh");
        System.out.println(stringBuffer);
        //4.查indexOf  查找字符串第一次出现的位置,找不到返回-1
        System.out.println(stringBuffer.indexOf("java"));
        //5.插入 insert
        stringBuffer.insert(1,'a');
        System.out.println(stringBuffer);
        //6.获取长度length
        System.out.println(stringBuffer.length());
    }
}

编译结果

在这里插入图片描述

测试

package string;

public class StringBufferTest {
    public static void main(String[] args) {
        String str = null;
        StringBuffer stringBuffer = new StringBuffer();
        System.out.println(stringBuffer.length());
        stringBuffer.append(str);
        System.out.println(stringBuffer.length());
        StringBuffer stringBuffer1 = new StringBuffer(str);
        System.out.println(stringBuffer.length());
    }
}

编译结果
在这里插入图片描述

分析

使用append方法是将null作为字符串添加到char[]中,故数组长度为4

但是使用StringBuffer构造器是将String对象作为参数传入,但是此时str为空,故出现了空指针异常
在这里插入图片描述

​ 如图所示 str为空,str.length() + 16 会报错

联系

输入商品名称和商品价格,要求打印效果示例,使用前面学习的方法完成商品名商品价格
手机123,564.59 1/比如价格3.456,789.88
要求:价格的小数点前面每三位用逗号隔开,在输出。

package string;

import java.util.Scanner;

public class StringBufferTest {
    public static void main(String[] args) {
      /*String price = "13123.342";
      StringBuffer stringBuffer = new StringBuffer(price);
        int  i = stringBuffer.indexOf(".");
        System.out.println(i);
        stringBuffer.insert(i-3,',');
        System.out.println(stringBuffer);*/

        String phone = new String("手机");
        String price = new Scanner(System.in).next();
        StringBuffer stringBuffer = new StringBuffer(price);
        for (int i = stringBuffer.lastIndexOf(".") -3; i > 0; i -= 3){
            stringBuffer.insert(i,',');
        }
        System.out.print(phone + "  ");
        System.out.println(stringBuffer);
    }
}

编译结果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java是一门非常流行的编程语言,它在现代软件开发中扮演着至关重要的角色。在Java中,String、StringBuilder以及StringBuffer是三个常用的字符串型。 首先,String是Java中最常用的字符串型之一。它是一个不可变字符串,一旦创建就无法修改。在Java中,String是用双引号引起来的字符序列,例如:"Hello World"。由于String对象不可修改,因此它不适合使用在需要频繁修改字符串的场景下。 其次,StringBuilder和StringBufferJava中另外两种可变字符串型。与String不同,StringBuilder和StringBuffer可以修改已经存在的字符串。StringBuilder是线程不安全的,适合在单线程应用中使用。而StringBuffer是线程安全的,适合在多线程应用中使用。 虽然StringBuilder和StringBuffer都可以修改字符串,它们在内部实现上有所不同。StringBuilder在修改字符串时直接修改原有的字符串,而StringBuffer在修改字符串时会先复制一份原有的字符串,再进行修改。由于StringBuffer的实现更加安全,所以它会比StringBuilder慢一些。 在使用StringBuilder和StringBuffer时,程序员需要注意的一点是尽量避免创建多余的对象。在追加字符串时,应该直接在已有的StringBuilder或StringBuffer对象上进行操作,而不是每次都创建一个新对象。这样可以极大地提高程序的性能。 总之,String、StringBuilder和StringBufferJava中常用的三种字符串型。程序员应该根据自己的需要选择合适的型。如果字符串需要频繁修改,并且在多线程环境下进行操作,那么应该使用StringBuffer。如果字符串在单线程环境下进行操作,并且需要频繁修改,那么应该使用StringBuilder。如果字符串不需要修改,那么应该使用String。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值