java 面试题整理二

String、StringBuffer、StringBuilder 的区别

本文代码使用的jdk版本为1.8

动态拼接字符串时,String的效率不如StringBuffer

测试代码如下:

    String str = "";
    System.out.println(System.currentTimeMillis());
    for(int i=0; i<10000; i++){
        str += i;
    }
    System.out.println(System.currentTimeMillis());
    System.out.println();

    StringBuffer sbf = new StringBuffer();
    System.out.println(System.currentTimeMillis());
    for(int i=0; i<10000; i++){
        sbf.append(i);
    }
    System.out.println(System.currentTimeMillis());

结果如下:
这里写图片描述

静态内容拼接 如:
String s = "测试"+"内容"+"拼接";

java虚拟在编译的时候会将内容优化为”测试内容拼接”;

线程安全

StringBuffer 是线程安全的,StringBuilder是非线程安全的,所以在效率上不如StringBuilder

是否生成多个对象

String中保存内容用的是final char value[]
StringBuffer、StringBuilder中保存内容用的是char[] value
String的每一次操作都会生成一个新的对象,而StringBuffer、StringBuilder则会在扩容时生成一个新的数组,并将value指向这个数组

String 说明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值