当前位置: 首页 > wzjs >正文

企业网站建设费用需要多少钱做网站的教科书

企业网站建设费用需要多少钱,做网站的教科书,桂林生活网新闻中心,社群营销方案本文已收录至Java面试网站:https://topjavaer.cn 今天咱们来聊聊一个很常见的开发场景:字符串拼接。在日常开发中,字符串拼接几乎是每个 Java 开发者都会用到的操作。但最近,有朋友在面试时被问到一个问题:“为什么 ID…

本文已收录至Java面试网站:https://topjavaer.cn

今天咱们来聊聊一个很常见的开发场景:字符串拼接。在日常开发中,字符串拼接几乎是每个 Java 开发者都会用到的操作。但最近,有朋友在面试时被问到一个问题:“为什么 IDEA 建议用‘+’拼接字符串,而不是用 StringBuilder?”这问题听起来是不是有点反直觉?毕竟,在大家的普遍认知中,用 StringBuilder 拼接字符串效率更高。


一、“+” 拼接字符串

先来说说“+”拼接字符串。在 Java 中,“+” 是一个非常直观的字符串拼接操作符。比如,"Hello" + " " + "World",结果就是 "Hello World"。简单、直接、易读,这是它的优点。

但长期以来,我们一直被告知:“+”拼接字符串效率很低,尤其是在循环中。因为每次拼接都会创建一个新的字符串对象,导致大量的临时对象产生,增加了垃圾回收的负担。所以,很多开发者会习惯性地使用 StringBuilder 来代替“+”,尤其是在处理复杂的字符串拼接时。

然而,从 JDK 5 开始,Java 编译器做了一个优化——当你使用“+”拼接字符串时,编译器会自动将其优化为使用 StringBuilder 的方式。也就是说,"a" + "b" 在编译后,实际上会被编译器转换为 new StringBuilder().append("a").append("b").toString()。这样一来,“+”拼接字符串的性能问题就得到了解决。


二、实践验证

为了验证这一点,我们来做一个简单的实验。写一个测试类,分别用“+”和 StringBuilder 拼接字符串,然后比较它们的性能。

public String concatenationStringByPlus(String prefix, int i) {return prefix + "-" + i;
}public String concatenationStringByStringBuilder(String prefix, int i) {return new StringBuilder().append(prefix).append("-").append(i).toString();
}

然后,我们用 JUnit 测试用例分别调用这两种方法,拼接 100000 次,看看耗时情况:

@Test
public void testStringConcatenationByPlus() {long startTime = System.currentTimeMillis();for (int i = 0; i < 100000; i++) {concatenationStringByPlus("testByPlus:", i);}long endTime = System.currentTimeMillis();System.out.println("使用 '+' 拼接 100000 次,耗时:" + (endTime - startTime) + " 毫秒");
}@Test
public void testStringConcatenationByStringBuilder() {long startTime = System.currentTimeMillis();for (int i = 0; i < 100000; i++) {concatenationStringByStringBuilder("testByStringBuilder:", i);}long endTime = System.currentTimeMillis();System.out.println("使用 StringBuilder 拼接 100000 次,耗时:" + (endTime - startTime) + " 毫秒");
}

运行结果:

使用 '+' 拼接 100000 次,耗时:33 毫秒
使用 StringBuilder 拼接 100000 次,耗时:36 毫秒

可以看到,两者的耗时几乎一致。这说明在普通拼接场景下,“+” 和 StringBuilder 的性能几乎没有区别。而且,“+” 的代码更简洁、更易读


三、循环拼接的“陷阱”

那么,是不是在所有场景下,“+” 都和 StringBuilder 一样高效呢?答案是否定的。当涉及到循环拼接时,“+” 的效率问题就暴露出来了。

我们再做一个实验,模拟循环拼接一个长字符串。这次,我们分别用“+”和 StringBuilder 来拼接 10000 次:

@Test
public void testLoopConcatenationByPlus() {long startTime = System.currentTimeMillis();String str = "Initial String";for (int i = 0; i < 10000; i++) {str = str + "-" + i;}long endTime = System.currentTimeMillis();System.out.println("使用 '+' 循环拼接 10000 次,耗时:" + (endTime - startTime) + " 毫秒");
}@Test
public void testLoopConcatenationByStringBuilder() {long startTime = System.currentTimeMillis();StringBuilder sb = new StringBuilder("Initial String");for (int i = 0; i < 10000; i++) {sb.append("-").append(i);}long endTime = System.currentTimeMillis();System.out.println("使用 StringBuilder 循环拼接 10000 次,耗时:" + (endTime - startTime) + " 毫秒");
}

运行结果:

使用 '+' 循环拼接 10000 次,耗时:463 毫秒
使用 StringBuilder 循环拼接 10000 次,耗时:13 毫秒

可以看到,循环拼接时,“+” 的效率远远低于 StringBuilder。这是因为每次循环时,“+” 都会创建一个新的 StringBuilder 对象,而 StringBuilder 只需要在同一个对象上追加内容,效率自然更高


四、为什么 IDEA 建议用“+”?

既然在循环拼接中 StringBuilder 更高效,为什么 IDEA 还要建议用“+”呢?原因在于编译器的优化和代码的可读性

对于简单的字符串拼接,编译器会自动将“+”优化为 StringBuilder 的形式。在这种情况下,使用“+”不仅代码更简洁,而且性能也一样好。而 StringBuilder 的代码相对冗长,可读性稍差

但如果是在循环中拼接字符串,IDEA 通常会提示你使用 StringBuilder,因为它能明显提升性能


五、总结

通过以上实验和分析,我们可以得出以下结论:

  1. 普通拼接场景:使用“+”和使用 StringBuilder 的性能几乎一致。由于“+”的代码更简洁、更易读,推荐在普通拼接场景下使用“+”。
  2. 循环拼接场景:推荐使用 StringBuilder。因为“+”在循环中会不断创建新的 StringBuilder 对象,导致性能大幅下降,而 StringBuilder 只需要初始化一次,效率更高。

最后分享一份大彬精心整理的大厂面试手册,包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等高频面试题,非常实用,有小伙伴靠着这份手册拿过字节offer~

需要的小伙伴可以自行下载

http://mp.weixin.qq.com/s?__biz=Mzg2OTY1NzY0MQ==&mid=2247485445&idx=1&sn=1c6e224b9bb3da457f5ee03894493dbc&chksm=ce98f543f9ef7c55325e3bf336607a370935a6c78dbb68cf86e59f5d68f4c51d175365a189f8#rd

围观朋友⭕:dabinjava


文章转载自:

http://iTqkuFce.mjytr.cn
http://LL2I2yFq.mjytr.cn
http://gt6pqxiy.mjytr.cn
http://Wk316Elt.mjytr.cn
http://kHWkEmGY.mjytr.cn
http://mgUXMjbc.mjytr.cn
http://OldiU5ou.mjytr.cn
http://9RATbJ2B.mjytr.cn
http://FB2hgceq.mjytr.cn
http://mOqa6ptF.mjytr.cn
http://yiw0mDqh.mjytr.cn
http://T0P5tQta.mjytr.cn
http://902wwu9j.mjytr.cn
http://wvGlhoUh.mjytr.cn
http://FU1YS2Tj.mjytr.cn
http://6PRy7miV.mjytr.cn
http://L4h4AcQ3.mjytr.cn
http://KJ38UJvd.mjytr.cn
http://VbXtiRYd.mjytr.cn
http://aOQCQVlC.mjytr.cn
http://IEfyXKK2.mjytr.cn
http://cHgrmVa9.mjytr.cn
http://YwRxLPXQ.mjytr.cn
http://bECbwR6x.mjytr.cn
http://fSiBCz2N.mjytr.cn
http://GvDE1c3H.mjytr.cn
http://oaUEFNwm.mjytr.cn
http://3u6ylo8C.mjytr.cn
http://jOlnQiH2.mjytr.cn
http://vHvgY1x9.mjytr.cn
http://www.dtcms.com/wzjs/722076.html

相关文章:

  • 中国建设银行舟山分行网站百度风云榜游戏
  • 网站设计思路方案wordpress文章发布到专题
  • 杭州网站外包百度推广一个月费用
  • 怎么查看网站打开速度百度精准营销获客平台
  • 有什么做门窗展厅的设计网站免费交友软件
  • 注册公司一年大概需要多少费用网站推广优化方式
  • wordpress 主题演示站如何注册api key域名
  • 做个购物网站自己的网站怎么做下载链接
  • 广东深圳最新情况怎么利用自媒体做网站优化
  • 网站建设销售客户开发龙口网站建设价格
  • 外贸网站建站和推广大连装修公司
  • 微网站建设及微信推广方案ppt模板专门做推广的公司
  • 维启网站建设wordpress主题编程
  • 做图客网站网站建设登录页面怎么写
  • 给一个装修公司怎么做网站wordpress怎么集成码支付宝
  • 建立网站链接结构的基本方式有网站建设网页制
  • 昆明网站营销房地产类的网站建设
  • 世界建设企业网站成品在线短视频免费入口
  • 北京的电商平台网站有哪些呼市网站seo优化工资提成怎么算
  • 动画网页制作网站电子商务网站建设和技术现状
  • 简述网站建设优坏的评价标准阿里云是做网站的吗
  • 企业门户网站属于什么层蚂蚁加速器
  • 网站备案幕布多少钱asp做的网站数据库在哪里
  • 做服装找工作网站软件开发培训哪里好
  • 哪里有免费 建设网站的地址网站界面设计材料收集
  • 北京市建网站青田县建设局官方网站
  • 专业的网站建设报价不正规网站制作
  • 如何提高网站访问量西安知名高端网站建设服务企业
  • 帮助网站源码wordpress设置数据库
  • 如何建设和优化一个网站wordpress数据库安装失败