何时可以用 + 拼接字符串,何时不可以用用 + 拼接字符串?

导读:本篇文章讲解 何时可以用 + 拼接字符串,何时不可以用用 + 拼接字符串?,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

何时可以用 + 拼接字符串,何时不可以用用 + 拼接字符串?


前言

我们做 Java 程序猿/媛 以来,不管是工作当中,还是面试过程中,都知道:字符串拼接不能用 String,要用 StringBuilder 或者是 StringBuffer,以至于它们都被滥用了。

StringBuilder、StringBuffer 简称:SB,下文统一用 SB 代替。

SB它们都是可变的字符串,它们之间的区别也是 Java 初中级面试战场上出现几率十分高的一道题,上场率没有 90% 也有 80% 吧。

这两个的具体区别请看这篇文章:为什么需要用stringbuffer或者StringBuilder去拼接字符串——而不用string——以及stringbuffer的基本了解

字符串拼接一定要用 SB 吗?为什么不能用 + ?能不能用 + ?什么时候可以用 + ?


什么时候不能用 +

通过多个表达式完成一个字符串拼接操作。

private void test1() {
    String blog = "https://blog.";
    String str = www;
    str += "csdn.net";
    str += "/Mrs_chens/article/list/14";
}

我们在代码中拼接了两次,也就是说每一次拼接操作都会创建一次 StringBuilder。频繁创建对象是有性能开销的,这也是为什么我们常说的字符串不能用 + 拼接,而要用那两个 SB 拼接了。


什么时候可以用 +

直接将三个字面量的字符串拼接成一个字符串。

private static void test2() {
    String str = "https://blog." + "csdn.net/" + "Mrs_chens";
}

直接从常量池进行取出一个完整的字符串:https://blog.csdn.net/Mrs_chens。在这种情况下是可以用 + 号进行字符串拼接的。

当这种拼接操作演变成我们实际工作当中的某个 SQL 语句拼接的案例,如:

String sql = "SELECT name, sex, age, address"
        + "FROM t_user"
        + "WHERE age > 18";

别说这样不行,这样是行的。

但你要是换成这样就不行了:

String sql = "SELECT name, sex, age, address";
sql += "FROM t_user";
sql += "WHERE age > 18";

这样又回到创建多个 StringBuilder 的时候了。也就是说,在一个表达式中完成字符串拼接是可以用 + 号完成的,因为编译器已经做了优化。


总之

你只需要记住这两点:

  1. 在循环和多个表达式中不能 +,频繁创建 SB 性能影响;
  2. 在单个表达式中可以用 +,编译器直接做了优化;

最后

  • 更多参考精彩博文请看这里:《陈永佳的博客》

  • 喜欢博主的小伙伴可以加个关注、点个赞哦,持续更新嘿嘿!


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/97458.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!