Java中强制转换性能_【进阶之路】Java代码性能调优(一)

本文介绍了Java中的字符串优化,包括不变性和常量池,建议使用StringBuilder而非+号拼接,关注toString()与String.valueOf()的区别,以及 intern 方法的使用。此外,探讨了数字优化,如装箱操作的细节,以及如何处理金额计算的精度问题。最后,讨论了集合的优化,如ArrayList与LinkedList的选择,HashMap、LinkedHashMap和TreeMap的适用场景,以及Set和RandomAccess接口的应用。
摘要由CSDN通过智能技术生成

导言

大家好,我是南橘,从接触java到现在也有差不多两年时间了,两年时间,从一名连java有几种数据结构都不懂超级小白,到现在懂了一点点的进阶小白,学到了不少的东西。知识越分享越值钱,我这段时间总结(包括从别的大佬那边学习,引用)了一些平常学习和面试中的重点(自我认为),希望给大家带来一些帮助

第一件事还是把思维导图贴给大家,因为用的是免费版,所以有水印,如果需要原始版本的话,可以加我的微信:

241885ec45934a04b226ceb1ce978d98.png

一、字符串的优化

1、String优化

String对象是java中重要的数据类型,在大部分情况下我们都会用到String。在java语言漫长的进化过程中,开发人员也对String做了大量的优化,其中字符串的不变性和常量池复用也是String的重要特点

1、不变性

String类以final进行了修饰,在系统中就不可能有String的子类,同时String对象的状态在其被创建之后就不在发生变化。在一个对象被多线程共享,而且被频繁的访问时,可以省略同步和锁的时间,从而提高性能。它也保证 hash 属性值不会频繁变更,确保了唯一性,使得类似 HashMap 容器才能实现相应的 key-value 缓存功能。所以这一点也是出于对系统安全性的考虑。

2、常量池优化

当两个String对象拥有同一个值的时候,他们都只是引用了常量池中的同一个拷贝。所以当程序中某个字符串频繁出现时,这个优化技术就可以节省大幅度的内存空间了。

大家都知道

String a ="abc";

String b ="abc";

a == b

复制代码

既然如此,那为什么在String中还存在“+”之类的操作呢?

2、字符串拼接

String通过+号来拼接字符串的时候,如果有字符串变量参与,实际上底层会转成通过StringBuilder的append( )方法来实现。

b0f93d89ea64dfa2742a63383c11ac0c.png

265d2772dcecf49415b8ba4c1acc244c.png

我们再继续分析"+",StringBuilder和StringBuffer的运行效率:

c38e620830fca11ae256b9f3d4616bfa.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值