java string

本文探讨了Java中String、StringBuffer和StringBuilder的使用。String是不可变的,适合做标记和存储;StringBuilder是非线程安全的可变字符串,速度更快;而StringBuffer是线程安全的,当涉及多线程操作时使用。文章通过示例代码展示了它们的创建、操作和性能差异,并建议在不需要线程安全时选择StringBuilder以提高效率。
摘要由CSDN通过智能技术生成

1.String

不可变字符串

String - Java 11中文版 - API参考文档 (apiref.com)

public static void main(String[] args)
    {
        String a = new String("A");
        char [] test1 = new char[3];
        test1[0] = '1';test1[1] = '2';test1[2] = '3';
        String b = new String();
        String C = new String(test1);
        String D = new String(test1,0,2);
        System.out.println(a+'\n'+b+'\n'+C+'\n'+D);
        System.out.println(a.isEmpty());
        System.out.println(b.isEmpty());
        System.out.println(C.length());
        String d = D.repeat(15);
        System.out.println(d);
    }

2.Stringbuffer

可变字符串,线程安全。

public static void main(String[] args)
    {
        StringBuffer a = new StringBuffer("A");
        a.append(true);
        a.append('B');
        a.append(12.345678);
        System.out.println(a);
        System.out.println(a.capacity());
        a.insert(4,"abdcd");
        a.insert(5,true);
        System.out.println(a);
        a.delete(1,9);
        System.out.println(a);
        a.reverse();
        System.out.println(a);
        System.out.println(a.substring(1,4));
        
    }

3.stringbuilder

不线程安全的可变字符串

public static void main(String[] args)
    {
        StringBuilder a = new StringBuilder("A");
        a.append(true);
        a.append('B');
        a.append(12.345678);
        System.out.println(a);
        System.out.println(a.capacity());
        a.insert(4,"abdcd");
        a.insert(5,true);
        System.out.println(a);
        a.delete(1,9);
        System.out.println(a);
        a.reverse();
        System.out.println(a);
        System.out.println(a.substring(1,4));
        
    }

显然,string是固定字符串,适合做标记或者传输或者临时存储。

stringbuilder比stringbuffer快,不涉及线程安全的时候用stringbuilder,反之yongstringbuffer

3.开发的时候不用+做拼接

String str="";
for(int i=0;i<10;i++){
	str+="a";
}
str=str+"a"+"b";
//据说是反编译代码
String str = "";
for(int i = 0; i < 10; i++)
	str = (new StringBuilder()).append(str).append("a").toString();
str = (new StringBuilder()).append(str).append("a").append("b").toString();

好暴力的优化,简直跟没有优化一样。不过也正常,因为要保证str的类型不被转换,只能这样办了, 如果封装成函数的话会快不少呢。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值