何时可以用 + 拼接字符串,何时不可以用用 + 拼接字符串?
前言
我们做 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 的时候了。也就是说,在一个表达式中完成字符串拼接是可以用 + 号完成的,因为编译器已经做了优化。
总之
你只需要记住这两点:
- 在循环和多个表达式中不能 +,频繁创建 SB 性能影响;
- 在单个表达式中可以用 +,编译器直接做了优化;
最后
-
更多参考精彩博文请看这里:《陈永佳的博客》
-
喜欢博主的小伙伴可以加个关注、点个赞哦,持续更新嘿嘿!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/97458.html