优化问题!

优化:02-编写一个程序,这个程序把一个整数数组中的每个元素用逗号连接成一个字符串。

需求:
1.代码运行无问题,现在就是想优化。
2.处女座,追求完美,如果瑕疵的地方一律指出。
3.2020年先定一个小目标,先来100道。
题目:
1.编写一个
lrc歌词程序,这个程序把一个整数数组中的每个元素用逗号连接成一个字符串。 
2.例如,根据内容为[1][2][3]的数组形成内容为"1,2,3"的字符串。
代码:

public class TwoDemo {

    public static void main(String[] args) {

        // 创建一个整数数组

        int[] array = new int[] { 1234 };

        // 构建一个StringBuilder(可变的字符串序列)

        StringBuilder sb = new StringBuilder();

 

        // array.length的长度为4

        for (int i = 0; i < array.length - 1; i++) {

            sb.append(array[i] + ","); // 程序最后结果为1,2,3,

        }

        sb.append(array[array.length - 1]); // 将最后一个元素单独加上,解决末尾有","问题

        System.out.println(sb); // 结果为:1,2,3,4

    }

}

1.StringBuilder也是需要扩容的,既然是传入的一个数组,所以字符串长度是确定的,可以改为 StringBuilder sb = new StringBuilder((array.length<<1)-1),避免数组长度过大 时StringBuilder需要多次扩容
2.sb.append(array[i] + ","),你既然用到了StringBuilder,就是不想用字符串拼接,建议改成sb.append(array[i]).append(",")

这是多线程下的拼接结果

因为我了解到的是StringBuffer比StringBuilder快,但是没有StringBuilder安全。如果只是考虑速度的话,当然是用StringBuffer,只考虑安全的,就是StringBuilder用的多了,我是这样理解的。

嗯,你的理解没错,所以我更注重安全一点,虽然StringBuilder比StringBuffer快,但这并不代表StringBuffer很慢,单线程,数据量大用StringBuilder,多线程,数据量不算太大用StringBuffer

感谢您的回答
01我温习了二进制,了解了"<<:是逻辑左移,右边补0",array.length的长度是4,二进制码是0100,array.length<<1的长度是8,<<表示将1左移一位,二进制码是1000。
02为什么用append而不用+?在循环中使用+=会创建多个StringBuilder对象,效率低,而使用append(),只会创建一个。

你说反了吧,StringBuffer是线程安全的,单线程中还是StringBuilder更好点

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值