《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

 

相关文章
|
6月前
|
Java 开发工具
【Azure Storage Account】Java Code访问Storage Account File Share的上传和下载代码示例
本文介绍如何使用Java通过azure-storage-file-share SDK实现Azure文件共享的上传下载。包含依赖引入、客户端创建及完整示例代码,助你快速集成Azure File Share功能。
463 7
|
6月前
|
Java 数据处理 API
为什么你的Java代码应该多用Stream?从循环到声明式的思维转变
为什么你的Java代码应该多用Stream?从循环到声明式的思维转变
333 115
|
6月前
|
安全 Java 编译器
为什么你的Java代码需要泛型?类型安全的艺术
为什么你的Java代码需要泛型?类型安全的艺术
239 98
|
6月前
|
Java 编译器 API
java最新版和java8的区别,用代码展示
java最新版和java8的区别,用代码展示
506 43
|
6月前
|
安全 Java 容器
告别空指针噩梦:Optional让Java代码更优雅
告别空指针噩梦:Optional让Java代码更优雅
482 94
|
6月前
|
安全 Java 容器
告别繁琐判空:Optional让你的Java代码更优雅
告别繁琐判空:Optional让你的Java代码更优雅
|
7月前
|
IDE Java 关系型数据库
Java 初学者学习路线(含代码示例)
本教程为Java初学者设计,涵盖基础语法、面向对象、集合、异常处理、文件操作、多线程、JDBC、Servlet及MyBatis等内容,每阶段配核心代码示例,强调动手实践,助你循序渐进掌握Java编程。
877 3
|
6月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
295 1
|
6月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
315 1
|
7月前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案