Java-StringBuffer和StringBuilder

这篇博客探讨了Java中String、StringBuilder和StringBuffer的区别。String是不可变对象,而StringBuilder和StringBuffer是可变的,后者在多线程环境下是线程安全的。文中通过示例展示了如何使用StringBuilder进行字符串追加和反转操作,并演示了读写文件的过程。此外,还涉及到了对StringBuilder进行字符串反转后的状态及其调整。
摘要由CSDN通过智能技术生成

1)String和StringBuffer、StringBuilder来说,String是不可变的类,StringBuffer、StringBuilder是可变的类。

2)String不可变的类:只要创建String对象且赋值之后,不能追加赋值,一旦更改就会创建新的对象。

3)StringBuffer和StringBuilder来说创建一个对象之后,还可以在这个对象上通过append方法可以进行追加。

4)StringBuffer线程是安全的,StringBuffer线程是不安全的,但是与StringBuffer相比速度较快。

    //这样就会产生俩个string对像, "aaa" 会产生一个对像, "aaasss"也会产生一个新的对象。
    String str="aaa";
    str =str+"sss";

    //这个只是产生一个对象sb,通过append这个方法在sb对象上追加。
    StringBuffer sb=new StringBuffer;
    sb.append("aaa");
    sb.append("sss");

 

package com.example.demo.StringTest;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import java.io.*;

/**
 * @author hanqiang
 * @Classname StringTest
 * @Date 2021/5/20 14:23
 * @Description:
 */
@SpringBootTest
public class StringTest {
    @Test
    public void myTest() throws FileNotFoundException {

        StringBuilder stringBuilder=new StringBuilder();
        stringBuilder.append("aaa1");
        stringBuilder.append(1);
        stringBuilder.append(44.0);
        stringBuilder.append(33.00);
        System.out.println("反转前"+stringBuilder);
        //字符串反转
        stringBuilder.reverse();
        System.out.println("反转后"+stringBuilder);

        StringBuffer stringBuffer=new StringBuffer();
        stringBuffer.append("(这是测试数据");
        stringBuffer.append(11234567);

        try{
            FileReader fileWriter=new FileReader("C:\\Users\\Administrator\\Desktop\\1.txt");
            BufferedReader bufferedReader=new BufferedReader(fileWriter);
            char[] c=new char[20];
            while(bufferedReader.read(c)>0){
                    stringBuffer.append(c);
            }
            FileWriter fileWriter1=new FileWriter("C:\\Users\\Administrator\\Desktop\\2.txt");
            BufferedWriter bufferedWriter=new BufferedWriter(fileWriter1);
            bufferedWriter.write(new String(stringBuffer));
            bufferedWriter.flush();

            bufferedReader.close();
            bufferedWriter.close();

        }catch(Exception e){
            e.printStackTrace();
        }

        stringBuffer.append("------------------结束)");
        stringBuffer.reverse();
        System.out.println("#####3333###############:"+stringBuffer);
        System.out.println();
        //当反转之后,字符串一直处于反转状态,反转回来
        stringBuffer.reverse();
        System.out.println("从第十个字符串开始截取:"+stringBuffer.substring(10));
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值