您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > JAVA

这些Java编程小技巧肯定有你不知道的

时间:2023-11-15 12:49:22  来源:微信公众号  作者:知识创富老七

今天给大家分享一些JAVA开发小技巧,有些你可能已经知道并在使用,那就很棒了,如果有些你还不知道,那你今天看到并记住了而且在以后的工作中使用到了,那我的分享就有意义了。记得转发哟!

使用增强的 for 循环

增强的 for 循环也称为 for-each 循环,允许您迭代数组或集合,而无需手动管理索引。它简化了代码并使其更具可读性。例如:

int [] numbers = { 1 , 2 , 3 , 4 , 5 }; 
for ( int number :numbers) { 
    // 用 number 做一些事情
}

利用Java Streams API

Java 8中引入的Streams API为处理集合提供了强大的函数式操作。它允许您以简洁且富有表现力的方式执行过滤、映射和归约等操作。流可以增强代码可读性并减少样板文件。例如:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.stream()
                 .filter(n -> n % 2 == 0)
                 .mapToInt(n -> n)
                 .sum();

利用 var 关键字(对!你没看错,是var,Java也有了,Java 10+)

这不是JavaScript!该var关键字允许您使用隐式类型推断来声明变量。它减少了显式指定类型的需要,使代码更加简洁。例如:

var message = "Hello, world!";
var numbers = List.of(1, 2, 3, 4, 5);

使用StringBuilder进行高效的字符串连接

当连接多个字符串时,使用StringBuilder类比重复使用'+'运算符更高效。很多人习惯定义很多个String类型的变量,然后通过“+”来拼接,其实可以试试使用StringBuilder ,来避免了不必要的对象创建并提供了更好的性能。例如:

StringBuilder sb = new StringBuilder();
sb.Append("Hello");
sb.append(" ");
sb.append("world");
String result = sb.toString();

使用三元运算符

使用三元运算符来实现简洁的条件表达式:三元运算符 ( ? :) 允许您以紧凑的形式编写简单的条件表达式。它对于赋值或执行简单的分支逻辑很有用。例如:

int x = 10;
String message = (x > 5) ? "大于 5" : "小于或等于 5";

使用try-with-resources进行自动资源管理

这个我提过很多次,当使用实现该AutoCloseable接口的资源时,例如文件流或数据库连接,您可以使用try-with-resources语句来确保正确的资源清理,而无需显式关闭它们。例如:

try ( FileWriter  writer  =  new  FileWriter ( "myfile.txt" )) { 
    // 写入文件
}

使用<>运算符进行类型推断:

如果可以从赋值上下文推断类型,则<> ( ) 允许您省略泛型类实例化的类型参数。它减少了冗余并使代码更清晰。例如:

List <String> names = new ArrayList <>() ; // ArrayList 的类型推断 

使用该java.time包进行日期和时间操作

Java 8引入了该java.time包,它为日期和时间操作提供了更全面和直观的API。LocalDate它提供了、LocalTime、LocalDateTime、 和 等类Duration,可简化常见的日期和时间操作。

9. 应用方法引用:方法引用允许您通过名称引用方法而不调用它。它们可以使您的代码更加简洁和富有表现力,尤其是在使用函数式接口时。例如:

List<String> names = Arrays.asList("zhangsan", "lisi", "wangmazi");
names.forEach(System.out::println); //System.out.println()

在接口中使用默认方法

从Java 8开始,接口可以有默认方法,它提供默认的实现。默认方法允许您向接口添加新方法,而不会破坏现有的实现。它们可以方便地向接口添加实用方法或提供默认行为。

使用Optional类应用于判空的安全操作

该类Optional通过提供可能包含也可能不包含非空值的容器对象来帮助避免 NullPointerExceptions。它鼓励更明确地处理潜在的空值并减少空检查的需要。用于Optional指示某个值可能不存在并进行相应处理。

使用 lambda 表达式进行函数式编程

Java支持使用Lambda 表达式的函数式编程。它们提供了用于实现功能接口的简洁语法。Lambda 表达式在处理流、事件处理或异步编程时特别有用。

使用String.format()格式化字符串的方法

该String.format()方法允许您使用占位符和参数创建格式化字符串。它提供了一种便捷的方法来构造具有特定格式要求(例如日期、数字或对齐方式)的字符串。不要再使用拼接字符串的方式输出打印了,试试这个!例如:

int x = 10;
double y = 3.14;
String formatted = String.format("The value of x is %d and y is %.2f", x, y);

明智地使用break 和 continue语句

break语句允许您提前退出循环,而continue语句会跳过循环迭代中的剩余代码。必要时使用这些语句来控制循环中的执行流程,但要小心不要过度使用它们,因为它们会使代码更难理解。

使用Map.computeIfAbsent()方法

Java 8 中引入的方法允许您仅在键尚不存在时computeIfAbsent()计算给定键的值。Map它简化了处理需要检查键是否存在并有条件计算值的场景的代码。

Map<String, List<String>> map = new HashMap<>();
map.computeIfAbsent("key", k -> new ArrayList<>()).add("value"); 

利用Math类进行常见的数学运算

Math类是Java 中提供了广泛的数学函数和常量的工具类。它包括舍入、绝对值、对数、三角函数等方法。不要编写自己的数学函数,而是直接使用Math类

double x = 3.14;
double rounded = Math.round(x);
double sineValue = Math.sin(x);

使用Arrays.copyOfRange()方法

如果您需要使用现有数组中的元素子集创建新数组,则该Arrays.copyOfRange()方法可能很有用。它允许您指定开始和结束索引,并返回一个包含指定元素的新数组。

int[] sourceArray = {1, 2, 3, 4, 5};
int[] newArray = Arrays.copyOfRange(sourceArray, 1, 4); // 创建一个新数组 {2, 3, 4}

多用String.join()方法

该String.join()方法将集合或数组的元素简化为单个字符串。您可以指定要在元素之间插入的分隔符。

List<String> names = Arrays.asList("zhagnsan", "lisi", "wangmazi");
String joinedNames = String.join(", ", names); // Returns "zhangsan, lisi, wangmazi"

利用类EnumSet来处理枚举集

利用 EnumSet 类处理枚举集:如果需要处理一组枚举值,EnumSet 类提供了高度优化的实现方式。它为枚举提供了高效的存储和操作。在处理枚举常量时,EnumSet 是 HashSet 的高性能替代品。

enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }
Set<Day> weekdays = EnumSet.of(Day.MONDAY, Day.TUESDAY, Day.WEDNESDAY, Day.THURSDAY, Day.FRIDAY);

使用Collections.reverse()反转列表的方法

该类Collections提供了处理集合的实用方法。该reverse()方法允许您反转 中元素的顺序List。

List<Integer> numbers = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
Collections.reverse(numbers); // 就地反转列表


Tags:Java编程   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
这些Java编程小技巧肯定有你不知道的
今天给大家分享一些Java开发小技巧,有些你可能已经知道并在使用,那就很棒了,如果有些你还不知道,那你今天看到并记住了而且在以后的工作中使用到了,那我的分享就有意义了。记得转...【详细内容】
2023-11-15  Search: Java编程  点击:(308)  评论:(0)  加入收藏
Java编程入门指南:从零开始学习Java语言
Java是一种广泛应用于软件开发领域的高级编程语言。它以其简洁、可靠和跨平台的特性而受到广大开发者的喜爱。如果你对Java编程感兴趣,本文将为你提供一个从零开始学习Java语...【详细内容】
2023-11-13  Search: Java编程  点击:(208)  评论:(0)  加入收藏
Java编程中必知必会的5条SOLID原则
简介在面向对象编程(OOP)领域,SOLID原则是类设计的指导准则。这五个原则形成了一套规则和最佳实践,开发人员在设计类结构时应遵循这些原则。通过理解和应用这些原则,我们可以发挥...【详细内容】
2023-08-05  Search: Java编程  点击:(283)  评论:(0)  加入收藏
Java编程工具哪种好?
Java强大的功能需要依托在软件工具上实现,所以Java编程开发需要用到编程工具,市面上有哪些Java编程工具呢?那种编程工具好呢?该怎么选择呢?接下来罗列了一系列的Java编程开发工具...【详细内容】
2022-10-17  Search: Java编程  点击:(320)  评论:(0)  加入收藏
Java编程中如何正确的将byte「」数组转化为String类型?
很多人在编程时,总是喜欢用一下方法将数组转为字符串:(a为byte数组)String s=a.toString();可是每次返回的时候,新手看来返回的结果是乱码,比如说我,写RSA算法时,没有注意,就以为是解...【详细内容】
2019-11-01  Search: Java编程  点击:(579)  评论:(0)  加入收藏
▌简易百科推荐
Java 8 内存管理原理解析及内存故障排查实践
本文介绍Java8虚拟机的内存区域划分、内存垃圾回收工作原理解析、虚拟机内存分配配置,以及各垃圾收集器优缺点及场景应用、实践内存故障场景排查诊断,方便读者面临内存故障时...【详细内容】
2024-03-20  vivo互联网技术    Tags:Java 8   点击:(14)  评论:(0)  加入收藏
如何编写高性能的Java代码
作者 | 波哥审校 | 重楼在当今软件开发领域,编写高性能的Java代码是至关重要的。Java作为一种流行的编程语言,拥有强大的生态系统和丰富的工具链,但是要写出性能优异的Java代码...【详细内容】
2024-03-20    51CTO  Tags:Java代码   点击:(19)  评论:(0)  加入收藏
在Java应用程序中释放峰值性能:配置文件引导优化(PGO)概述
译者 | 李睿审校 | 重楼在Java开发领域,优化应用程序的性能是开发人员的持续追求。配置文件引导优化(Profile-Guided Optimization,PGO)是一种功能强大的技术,能够显著地提高Ja...【详细内容】
2024-03-18    51CTO  Tags:Java   点击:(24)  评论:(0)  加入收藏
Java生产环境下性能监控与调优详解
堆是 JVM 内存中最大的一块内存空间,该内存被所有线程共享,几乎所有对象和数组都被分配到了堆内存中。堆被划分为新生代和老年代,新生代又被进一步划分为 Eden 和 Survivor 区,...【详细内容】
2024-02-04  大雷家吃饭    Tags:Java   点击:(55)  评论:(0)  加入收藏
在项目中如何避免和解决Java内存泄漏问题
在Java中,内存泄漏通常指的是程序中存在一些不再使用的对象或数据结构仍然保持对内存的引用,从而导致这些对象无法被垃圾回收器回收,最终导致内存占用不断增加,进而影响程序的性...【详细内容】
2024-02-01  编程技术汇  今日头条  Tags:Java   点击:(68)  评论:(0)  加入收藏
Java中的缓存技术及其使用场景
Java中的缓存技术是一种优化手段,用于提高应用程序的性能和响应速度。缓存技术通过将计算结果或者经常访问的数据存储在快速访问的存储介质中,以便下次需要时可以更快地获取。...【详细内容】
2024-01-30  编程技术汇    Tags:Java   点击:(72)  评论:(0)  加入收藏
JDK17 与 JDK11 特性差异浅谈
从 JDK11 到 JDK17 ,Java 的发展经历了一系列重要的里程碑。其中最重要的是 JDK17 的发布,这是一个长期支持(LTS)版本,它将获得长期的更新和支持,有助于保持程序的稳定性和可靠性...【详细内容】
2024-01-26  政采云技术  51CTO  Tags:JDK17   点击:(88)  评论:(0)  加入收藏
Java并发编程高阶技术
随着计算机硬件的发展,多核处理器的普及和内存容量的增加,利用多线程实现异步并发成为提升程序性能的重要途径。在Java中,多线程的使用能够更好地发挥硬件资源,提高程序的响应...【详细内容】
2024-01-19  大雷家吃饭    Tags:Java   点击:(105)  评论:(0)  加入收藏
这篇文章彻底让你了解Java与RPA
前段时间更新系统的时候,发现多了一个名为Power Automate的应用,打开了解后发现是一个自动化应用,根据其描述,可以自动执行所有日常任务,说的还是比较夸张,简单用了下,对于office、...【详细内容】
2024-01-17  Java技术指北  微信公众号  Tags:Java   点击:(95)  评论:(0)  加入收藏
Java 在 2023 年仍然流行的 25 个原因
译者 | 刘汪洋审校 | 重楼学习 Java 的过程中,我意识到在 90 年代末 OOP 正值鼎盛时期,Java 作为能够真正实现这些概念的语言显得尤为突出(尽管我此前学过 C++,但相比 Java 影响...【详细内容】
2024-01-10  刘汪洋  51CTO  Tags:Java   点击:(74)  评论:(0)  加入收藏
站内最新
站内热门
站内头条