Java中String,StringBuffer,StringBuilder的区别

String:它是一个常量,对字符串的拼接无非就是创建多个字符串对象而已


创建字符串的方式:

String str=”abc”;(推荐使用这种方式,会节约内存空间)

String str = new String(“abc”);


两者区别:

StringBuffer:线程安全的字符串缓冲区

StrtingBuilder:功能和StringBuffer一模一样,唯一的区别是线程不安全.(单线程效率比较高,多线程以后我们自己加锁解决并发的问题,所以动态字符串只要掌握StringBuilder即可)

StringBuilderString的区别?
String是常量,一旦声明了就不能改变了.
StringBuilder底层是一个字符数组,只要数组没有放满,就可以继续对这个数组的空间进行增删改操作,不会开辟新的空间,只有默认的数组放满了才会开辟新的一块数组空间,把原数组中的数据拷贝到新创建的数组中.

如何创建StringBuilder?
StringBuilder sb = new StringBuilder();//长度默认为16个
StringBuilder sb = new StringBuilder(32);//直接给定初始数组大小

StringBuilder sb = new StringBuilder(“abc”);//初始大小,是字符串的长度加16

示例代码:

public class StringDemo {
    public static void main(String[] args) {
        /*String str1 = "abc";
        String str2 = "abc";//先到常量池找有没有这个常量,有的话直接返回地址,没有的
        //在常量池中创建
        //String是引用数据类型,在栈和堆中都会分配空间
        System.out.println(str1 == str2);//两个变量中的地址是否一样 true
        System.out.println(str1.equals(str2));//比的是指向的字符串的内容是否一样 true
        System.out.println("---------------------------------------");
        String str3 = new String("abc");
        String str4 = new String("abc");
        System.out.println(str3 == str4);//指向两块不同的空间,所以变量中的地址肯定不一样false
        System.out.println(str3.equals(str4));//true*/

       /* String str="abc";
        str=str+"d";
        System.out.println(str);*/

        StringBuilder sb = new StringBuilder();//创建一个动态字符串(底层是一个长度为16的字符数组)
        String str = null;
        sb.append("abc");
        sb.append("abc");
        sb.append("abc");
        sb.append("abc");
        sb.append("abc");//给动态字符串赋值(只要不操作16个操作的是同一个字符数组)
        sb.append("abc");
        sb.append(str);
        System.out.println(sb);
        System.out.println(sb.length());//动态字符串的字符个数
        System.out.println(sb.capacity());//动态字符串的容量

        StringBuilder sb1 = new StringBuilder("abc");

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值