Java进阶工具: BigInteger, BigDecimal, 正则表达式 Arrays 实战指南

本文主要是介绍Java进阶工具: BigInteger, BigDecimal, 正则表达式 Arrays 实战指南,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在Java编程的世界里,处理大数据运算、精确的财务计算、复杂的文本匹配以及高效数组操作是开发者的日常挑战。本文将深入剖析 BigIntegerBigDecimal 类的高级运算功能,揭秘正则表达式的强大与灵活性,并介绍 Arrays 类这一数组操作的利器,为你提供一套全面且高效的解决方案。

1. BigInteger 类:驾驭大整数运算

当基本数据类型的整数无法满足你的计算需求时,BigInteger 类便成为了你的得力助手。它能够处理任意大小的整数,确保运算过程不会发生溢出。通过将整数的字符串表示形式传递给构造函数,你可以轻松创建 BigInteger 对象。此类型提供了丰富的成员方法,包括但不限于加法 (add)、减法 (subtract)、乘法 (multiply) 和除法 (divide),在进行除法运算时,如果结果不是整数,则会自动取整数部分。下面的示例展示了如何使用 BigInteger 进行基本运算:

BigInteger bigInt1 = new BigInteger("2147483648");
BigInteger bigInt2 = new BigInteger("2");BigInteger sum = bigInt1.add(bigInt2); // 加法
BigInteger diff = bigInt1.subtract(bigInt2); // 减法
BigInteger product = bigInt1.multiply(bigInt2); // 乘法
BigInteger quotient = bigInt1.divide(bigInt2); // 除法,取整
2. BigDecimal 类:确保浮点数运算的绝对精度

BigDecimal 类则专注于提供浮点数的精确运算,避免了使用 float double 时可能发生的精度损失。它同样可以通过字符串构造,确保了从一开始数据的准确无误。BigDecimal 支持加减乘除等运算,并且在进行除法运算时,可以通过指定舍入模式(如四舍五入 ROUND_HALF_UP、向下取整 ROUND_FLOOR、向上取整 ROUND_UP)和保留的小数位数,来控制结果的精度。例如:

BigDecimal decimal1 = new BigDecimal("0.1");
BigDecimal decimal2 = new BigDecimal("0.2");BigDecimal sumDecimal = decimal1.add(decimal2); // 加法
BigDecimal divisionDecimal = decimal1.divide(decimal2, 3, BigDecimal.ROUND_HALF_UP); // 除法,四舍五入保留三位小数
3. 正则表达式:文本处理的魔法棒

正则表达式是处理字符串的强大工具,它以简洁的语法描述复杂的文本模式,适用于搜索、替换、分割等操作。在Java中,通过 Pattern Matcher 类来实现正则表达式的功能。例如,验证一个字符串是否符合邮箱格式、提取URL中的域名等变得轻而易举。以下是一个简单示例,检查用户输入的QQ号码是否合法: 

String qqPattern = "^\\d{5,15}$"; // 定义QQ号码的正则表达式
Pattern pattern = Pattern.compile(qqPattern);
Matcher matcher = pattern.matcher(userInputQQ);if (matcher.matches()) {System.out.println("QQ号码合法");
} else {System.out.println("QQ号码不合法");
}
3.1、正则表达式的语法 
  • boolean matches(正则表达式) :如果匹配正则表达式就返回true,否则返回false
    • boolean matches(正则表达式) :如果匹配正则表达式就返回true,否则返回false
  • 字符类 
  • [abc] :代表a或者b,或者c字符中的一个。
    • [^abc]:代表除a,b,c以外的任何字符。
    • [a-z] :代表a-z的所有小写字符中的一个。
    • [A-Z] :代表A-Z的所有大写字符中的一个。
    • [0-9] :代表0-9之间的某一个数字字符。
    • [a-zA-Z0-9]:代表a-z或者A-Z或者0-9之间的任意一个字符。
    • [a-dm-p]:a 到 d 或 m 到 p之间的任意一个字符

 


/*字符类 : 方括号被用于指定字符[abc] :代表a或者b,或者c字符中的一个。[^abc]:代表除a,b,c以外的任何字符。[a-z] :代表a-z的所有小写字符中的一个。[A-Z] :代表A-Z的所有大写字符中的一个。[0-9] :代表0-9之间的某一个数字字符。[a-zA-Z0-9]:代表a-z或者A-Z或者0-9之间的任意一个字符。[a-dm-p]:a 到 d 或 m 到 p之间的任意一个字符需求 :1 验证str是否以h开头,以d结尾,中间是a,e,i,o,u中某个字符2 验证str是否以h开头,以d结尾,中间不是a,e,i,o,u中的某个字符3 验证str是否a-z的任何一个小写字符开头,后跟ad4 验证str是否以a-d或者m-p之间某个字符开头,后跟ad注意: boolean  matches(正则表达式) :如果匹配正则表达式就返回true,否则返回false*/
public class RegexDemo {public static void main(String[] args) {
//        1 验证str是否以h开头,以d结尾,中间是a,e,i,o,u中某个字符System.out.println("had".matches("h[aeiou]d"));//        2 验证str是否以h开头,以d结尾,中间不是a,e,i,o,u中的某个字符System.out.println("hwd".matches("h[^aeiou]d"));//        3 验证str是否a-z的任何一个小写字符开头,后跟adSystem.out.println("aad".matches("[a-z]ad"));//        4 验证str是否以a-d或者m-p之间某个字符开头,后跟adSystem.out.println("bad".matches("[a-dm-p]ad"));}
}
4. Arrays 类:数组操作的便捷工具 
int[] numbers = {3, 1, 4, 1, 5, 9};
Arrays.sort(numbers);
System.out.println(Arrays.toString(numbers)); // 输出排序后的数组

总结

通过本文的介绍,你应当对如何使用 BigInteger BigDecimal 进行高精度计算、如何利用正则表达式处理文本、以及如何借助 Arrays 类简化数组操作有了清晰的理解。这些技术的掌握,不仅能提升代码的性能和可读性,更能使你在面对复杂问题时游刃有余,展现出专业的编程实力。继续探索,不断实践,让Java之旅更加精彩!


 

 

 

 

 

这篇关于Java进阶工具: BigInteger, BigDecimal, 正则表达式 Arrays 实战指南的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1056691

相关文章

Java NoClassDefFoundError运行时错误分析解决

《JavaNoClassDefFoundError运行时错误分析解决》在Java开发中,NoClassDefFoundError是一种常见的运行时错误,它通常表明Java虚拟机在尝试加载一个类时未能... 目录前言一、问题分析二、报错原因三、解决思路检查类路径配置检查依赖库检查类文件调试类加载器问题四、常见

Java注解之超越Javadoc的元数据利器详解

《Java注解之超越Javadoc的元数据利器详解》本文将深入探讨Java注解的定义、类型、内置注解、自定义注解、保留策略、实际应用场景及最佳实践,无论是初学者还是资深开发者,都能通过本文了解如何利用... 目录什么是注解?注解的类型内置注编程解自定义注解注解的保留策略实际用例最佳实践总结在 Java 编程

Java 实用工具类Spring 的 AnnotationUtils详解

《Java实用工具类Spring的AnnotationUtils详解》Spring框架提供了一个强大的注解工具类org.springframework.core.annotation.Annot... 目录前言一、AnnotationUtils 的常用方法二、常见应用场景三、与 JDK 原生注解 API 的

Java controller接口出入参时间序列化转换操作方法(两种)

《Javacontroller接口出入参时间序列化转换操作方法(两种)》:本文主要介绍Javacontroller接口出入参时间序列化转换操作方法,本文给大家列举两种简单方法,感兴趣的朋友一起看... 目录方式一、使用注解方式二、统一配置场景:在controller编写的接口,在前后端交互过程中一般都会涉及

Java中的StringBuilder之如何高效构建字符串

《Java中的StringBuilder之如何高效构建字符串》本文将深入浅出地介绍StringBuilder的使用方法、性能优势以及相关字符串处理技术,结合代码示例帮助读者更好地理解和应用,希望对大家... 目录关键点什么是 StringBuilder?为什么需要 StringBuilder?如何使用 St

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

Java并发编程之如何优雅关闭钩子Shutdown Hook

《Java并发编程之如何优雅关闭钩子ShutdownHook》这篇文章主要为大家详细介绍了Java如何实现优雅关闭钩子ShutdownHook,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 目录关闭钩子简介关闭钩子应用场景数据库连接实战演示使用关闭钩子的注意事项开源框架中的关闭钩子机制1.

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows