最新公告
  • 新注册用户请前往个人中心绑定邮箱以便接收相关凭证邮件!!!点击前往个人中心
  • 字符串拼接+和concat的区别


    +和concat都可以用来拼接字符串,但在使用上有什么区别呢,先来看看这个例子。
    1. publicstaticvoid main(String[] args){
    2.    // example1
    3.    String str1 ="s1";
    4.    System.out.println(str1 +100);//s1100
    5.    System.out.println(100+ str1);//100s1
    6.    String str2 ="s2";
    7.    str2 = str2.concat("a").concat("bc");
    8.    System.out.println(str2);//s2abc
    9.    // example2
    10.    String str3 ="s3";
    11.    System.out.println(str3 +null);//s3null
    12.    System.out.println(null+ str3);//nulls3
    13.    String str4 =null;
    14.    System.out.println(str4.concat("a"));//NullPointerException
    15.    System.out.println("a".concat(str4));//NullPointerException
    16. }
    concat源码:
    1. publicString concat(String str){
    2.    int otherLen = str.length();
    3.    if(otherLen ==0){
    4.        returnthis;
    5.    }
    6.    int len = value.length;
    7.    char buf[]=Arrays.copyOf(value, len + otherLen);
    8.    str.getChars(buf, len);
    9.    returnnewString(buf,true);
    10. }
    看下生成的字节码:

    所以可以得出以下结论:

    • +可以是字符串或者数字及其他基本类型数据,而concat只能接收字符串。
    • +左右可以为null,concat为会空指针。
    • 如果拼接空字符串,concat会稍快,在速度上两者可以忽略不计,如果拼接更多字符串建议用StringBuilder。
    • 从字节码来看+号编译后就是使用了StringBuiler来拼接,所以一行+++的语句就会创建一个StringBuilder,多条+++语句就会创建多个,所以为什么建议用StringBuilder的原因。
    本站所有文章均由网友分享,仅用于参考学习用,请勿直接转载,如有侵权,请联系网站客服删除相关文章。若由于商用引起版权纠纷,一切责任均由使用者承担
    极客文库 » 字符串拼接+和concat的区别

    常见问题FAQ

    如果资源链接失效了怎么办?
    本站用户分享的所有资源都有自动备份机制,如果资源链接失效,请联系本站客服QQ:2580505920更新资源地址。
    如果用户分享的资源与描述不符怎么办?
    可以联系客服QQ:2580505920,如果要求合理可以安排退款或者退赞助积分。
    如何分享个人资源获取赞助积分或其他奖励?
    本站用户可以分享自己的资源,但是必须保证资源没有侵权行为。点击个人中心,根据操作填写并上传即可。资源所获收益完全归属上传者,每周可申请提现一次。
    如果您发现了本资源有侵权行为怎么办?
    及时联系客服QQ:2580505920,核实予以删除。

    参与讨论

    • 211会员总数(位)
    • 3737资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 869稳定运行(天)

    欢迎加入「极客文库」,成为原创作者从这里开始!

    立即加入 了解更多
    成为赞助用户享有更多特权立即升级