《Java工程师必读手册》——Java极客主义系列——Java代码高效之道(7)

简介: 《Java工程师必读手册》——Java极客主义系列——Java代码高效之道(7)


接上篇:

https://developer.aliyun.com/article/1227037?spm=a2c6h.13148508.setting.19.18334f0eu8bmt9

八、 异常

 

1. 直接捕获对应的异常

 

直接捕获对应的异常,避免用instanceof判断,效率更高代码更简洁。

 

 

反例

 

image.png 

 

正例

 

image.png 

 

2. 尽量避免在循环中捕获异常

 

当循环体抛出异常后,无需循环继续执行时,没有必要在循环体中捕获异常。因为,过多的捕获异常会降低程序执行效率。

 

反例

 

image.png

 

 

正例

 

image.png 

 

3. 禁止使用异常控制业务流程

 

相对于条件表达式,异常的处理效率更低。

 

反例

 

image.png 

 

正例

 

image.png 

 

九、 缓冲区

 

1. 初始化时尽量指定缓冲区大小

 

初始化时,指定缓冲区的预期容量大小,避免多次扩容浪费时间和空间。

 

反例

 

image.png 

 

正例

 

image.png

 

2. 尽量重复使用同一缓冲区

 

针对缓冲区,Java虚拟机需要花时间生成对象,还要花时间进行垃圾回收处理。所以,尽量重复利用缓冲区。

 

反例

 

image.png 

 

正例

 

image.png 

 

其中,使用setLength方法让缓冲区重新从0开始。

 

 

 

3. 尽量设计使用同一缓冲区

 

为了提高程序运行效率,在设计上尽量使用同一缓冲区。

 

反例

 

image.png

 

正例

 

image.png 

 

去掉每个转化方法中的缓冲区申请,申请一个缓冲区给每个转化方法使用。从时间上来说,节约了大量缓冲区的申请释放时间;从空间上来说,节约了大量缓冲区的临时存储空间。

 

4. 尽量使用缓冲流减少IO操作

 

使用缓冲流BufferedReader、BufferedWriter、BufferedInputStream、BufferedOutputStream等,可以大幅减少IO次数并提升IO速度。

 

反例

 

image.png 

 

正例

 

image.png 

 

其中,可以根据实际情况手动指定缓冲流的大小,把缓冲流的缓冲作用发挥到最大。


接下篇:https://developer.aliyun.com/article/1227008?groupCode=java

 

相关文章
|
4月前
|
Java 开发工具
【Azure Storage Account】Java Code访问Storage Account File Share的上传和下载代码示例
本文介绍如何使用Java通过azure-storage-file-share SDK实现Azure文件共享的上传下载。包含依赖引入、客户端创建及完整示例代码,助你快速集成Azure File Share功能。
411 5
|
5月前
|
IDE Java 关系型数据库
Java 初学者学习路线(含代码示例)
本教程为Java初学者设计,涵盖基础语法、面向对象、集合、异常处理、文件操作、多线程、JDBC、Servlet及MyBatis等内容,每阶段配核心代码示例,强调动手实践,助你循序渐进掌握Java编程。
652 3
|
4月前
|
Java 数据处理 API
为什么你的Java代码应该多用Stream?从循环到声明式的思维转变
为什么你的Java代码应该多用Stream?从循环到声明式的思维转变
300 115
|
4月前
|
安全 Java 编译器
为什么你的Java代码需要泛型?类型安全的艺术
为什么你的Java代码需要泛型?类型安全的艺术
215 98
|
4月前
|
安全 Java 容器
告别繁琐判空:Optional让你的Java代码更优雅
告别繁琐判空:Optional让你的Java代码更优雅
|
4月前
|
安全 Java 容器
告别空指针噩梦:Optional让Java代码更优雅
告别空指针噩梦:Optional让Java代码更优雅
431 94
|
4月前
|
Java 编译器 API
java最新版和java8的区别,用代码展示
java最新版和java8的区别,用代码展示
368 43
|
消息中间件 算法 Java
2023金九银十Java高级工程师面试 1000 题+答案(全)
前言 春节过后招聘旺季就到了,不知道大家是否准备好了,面对金三银四的招聘旺季,如果没有精心准备那笔者认为那是对自己不负责任;就我们 Java 程序员来说,多数的公司总体上面试都是以自我介绍+项目介绍+项目细节/难点提问+基础知识点考核+算法题这个流程下来的。 有些公司可能还会问几个实际的场景类的问题,这个环节阿里是必问的,这种问题通常是没有正确答案的,就看个人的理解,个人的积累了。剩下的就没啥了,都是换汤不换药,聊项目就看你自己对你自己的项目是否理解的透彻,比如经常问你你为什么选择这个技术,为什么这么处理之类的,常考的基础的知识点就那么多,最后算法就是靠刷题。 今天为大家分享的就是当前
|
XML JavaScript Java
华为Java工程师面试题
华为Java工程师面试题
144 0
|
消息中间件 Java 关系型数据库
宅家30天,2万字节java高级工程师面试题解析,如何斩获阿里p7
宅家里一个月,“闭关修炼”的你是不是正在为金三银四跳槽季发愁呢?小编今天说的这富含的15个互联网大厂Java高级工程师核心面试问题整理!内容包括: kafka面试题及解析18道 ZooKeeper面试题及解析28道 Linux 面试真题及解析45道 MySQL面试真题及解析50道 springboot面试真题及解析22道 微服务面试真题及解析50道 mybatis面试真题及解析27道 readis面试真题及解析40道 好好学习将这些面试题都吃透,让你金九银十不再慌张。
260 0