Java常用工具类

Java的核心库提供了大量的现成的类供我们使用。本节将总结几个常用的工具类。

一、基础计算工具类

1. Math类

Math类包含一系列静态方法,无需实例化即可直接调用,满足日常数学计算需求。(注:包含在java.lang包中,因此在编写Java程序时无需显式导入Math类)

  • 基础运算

    • Math.abs(x):返回x的绝对值(支持整数、浮点数)。
    • Math.max(a, b)/Math.min(a, b):返回两个数的最大值/最小值。
    • Math.pow(x, y):计算x的y次方(如Math.pow(2, 3)返回8.0)。
    • Math.sqrt(x):计算x的平方根(如Math.sqrt(25)返回5.0)。
  • 高级点的运算
    • Math.exp(x):计算e的x次方
    • Math.log(x):计算以e为底的对数
    • Math.log10(x):计算以10为底的对数
    • Math.sin(rad)/Math.cos(rad):计算正弦/余弦值(参数为弧度)。
    • Math.random():生成[0, 1)的随机浮点数。
  • 常量Math.PI(圆周率≈3.14159)、Math.E(自然常数≈2.71828)。

2. java.util.HexFormat类

Java 17引入的HexFormat类能够将基本类型、字节数组或字符数组转换为十六进制字符串,反之亦然(HexFormat是线程安全的,可以在多个线程中使用)。

  • 字节数组→十六进制字符串hf.formatHex(byte[])
    HexFormat hf = HexFormat.of();//创建HexFormat
    String hex = hf.formatHex("test".getBytes()); // 输出"74657374"
  • 十六进制字符串→字节数组hf.parseHex(String)
    byte[] bytes = hf.parseHex("74657374"); // 得到"test"的字节数组
  • 定制格式
    • HexFormat.ofDelimiter(":")(添加冒号分隔符)、
    • HexFormat.of().withUpperCase()(创建默认产生大写十六进制值的HexFormat,HexFormat的默认行为是产生小写十六进制值)。

3. Random与SecureRandom:随机数生成

  • Random:生成伪随机数,相同种子产生相同序列。
    Random r = new Random(100); // 指定种子
    r.nextInt(10); // 生成[0,10)的整数
    r.nextDouble(); // 生成[0,1)的双精度数
  • SecureRandom:用于安全场景(如加密、令牌生成),基于系统随机源生成不可预测的随机数。
    SecureRandom sr = SecureRandom.getInstanceStrong();
    byte[] key = new byte[16];
    sr.nextBytes(key); // 生成16字节的安全随机数

二、时间工具类java.time

Java 8引入的java.time包解决了传统时间类的线程安全问题,提供了清晰的时间处理API。

1. LocalDate:日期(年/月/日)处理

  • now():获取当前日期(如LocalDate.now()返回2025-08-15)。
  • of(int year, int month, int day):创建指定日期(如LocalDate.of(2024, 12, 31))。
  • plusYears(n)/minusMonths(n):增加/减少年/月(返回新对象,原对象不变)。
  • getYear()/getMonthValue()/getDayOfWeek():获取年/月(1-12)/星期(1=周一,7=周日)。

2. LocalTime:时间(时/分/秒)处理

  • now():获取当前时间(如LocalTime.now()返回15:30:45.123)。
  • of(int hour, int minute, int second):创建指定时间(如LocalTime.of(8, 30, 0))。
  • plusHours(n)/minusMinutes(n):增加/减少小时/分钟。
  • getHour()/getMinute():获取时/分。

3. LocalDateTime:日期+时间组合

  • now():获取当前日期时间(如2025-08-15T15:35:20)。
  • of(LocalDate, LocalTime):组合日期和时间(如LocalDateTime.of(ld, lt))。
  • format(DateTimeFormatter):格式化输出(如yyyy-MM-dd HH:mm:ss)。
  • parse(String, DateTimeFormatter):从字符串解析(如LocalDateTime.parse("2024-01-01 12:00:00", formatter))。

4. DateTimeFormatter:时间格式化

  • ofPattern(String):自定义格式(如DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm"))。
  • 内置格式:ISO_LOCAL_DATEyyyy-MM-dd)、ISO_LOCAL_TIMEHH:mm:ss)等。

Java核心类——9.常用工具类的更多相关文章

  1. Java项目案例之---常用工具类练习

    常用工具类练习 1. 请根据控制台输入的特定日期格式拆分日期,如:请输入一个日期(格式如:**月**日****年),经过处理得到:****年**月**日 import java.util.Scanne ...

  2. 最全面的Java字节byte操作,处理Java基本数据的转换及进制转换操作工具,流媒体及java底层开发项目常用工具类

    前言:用于处理Java基本数据的转换及进制转换操作工具 一.实现功能 1.int与byte互转 2.int与byte[]互转 3.short与byte互转 4.short与byte[]互转 5.16位 ...

  3. 廖雪峰Java2面向对象编程-6Java核心类-6常用工具类

    1.Math Math提供了数学计算的静态方法 序号 方法 描述 1 abs() 返回参数的绝对值.Math.abs(-9)//9 2 ceil() 返回大于等于( >= )给定参数的的最小整数 ...

  4. (转)JAVA 十六个常用工具类

    一. org.apache.commons.io.IOUtils closeQuietly 关闭一个IO流.socket.或者selector且不抛出异常.通常放在finally块 toString ...

  5. JAVA常用工具类汇总

    一.功能方法目录清单: 1.getString(String sSource)的功能是判断参数是否为空,为空返回"",否则返回其值: 2.getString(int iSource ...

  6. JavaEE-实验一 Java常用工具类编程

    该博客仅专为我的小伙伴提供参考而附加,没空加上代码具体解析,望各位谅解 1.  使用类String类的分割split 将字符串  “Solutions to selected exercises ca ...

  7. 简单了解Spring中常用工具类_java - JAVA

    文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 文件资源操作 Spring 定义了一个 org.springframework.core.io.Resource 接口, ...

  8. [转]Java常用工具类集合

    转自:http://blog.csdn.net/justdb/article/details/8653166 数据库连接工具类——仅仅获得连接对象 ConnDB.java package com.ut ...

  9. 项目经验分享——Java常用工具类集合 转

    http://blog.csdn.net/xyw591238/article/details/51678525 写在前面     本文涉及的工具类部分是自己编写,另一部分是在项目里收集的.工具类涉及数 ...

  10. Java常用工具类之删除文件

    package com.wazn.learn.util; import java.io.File; /** * 删除文件工具类 * @author yangzhenyu * */ public cla ...

随机推荐

  1. 【非对称加密】详解及Java实现

    非对称加密详解及Java实现 一.非对称加密概述 非对称加密(Asymmetric Cryptography),也称为公钥加密,是一种使用一对密钥(公钥和私钥)进行加密和解密的加密方法.它与对称加密的 ...

  2. 关于Django项目集成Xadmin后,出现服务异常解决方案

    Django项目集成Xadmin后,偶尔出现页面不能访问,重启服务也不行,如果是Nginx部署直接报504等错误. 解决方案: 在项目中的静态文件中找到:bootstrap-clockpicker.j ...

  3. 在idea里面如何配置自己的tomcat

    第一:到官网上去下载自己电脑对应的tomcat版本 第二:下载后解压 在bin目录里面找到: 双击打开是不是会出现: 然后再在bin里面找到:shutdown.bat 双击给他关闭了 第三:在我的电脑 ...

  4. Linux系统分析常用指令

    一.查看CPU 1.top命令 1.1 功能说明 top命令经常用来监控linux的系统状况,是常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况. 1.2 使用语法 top [-d num ...

  5. AOP的介绍以及在springboot中的简单使用

    Aop Aop的介绍 什么是Aop Aop面向切面编程,是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型.利用AOP可以对业务逻辑的各个部分进行 ...

  6. Visual Studio 2022 中的 EF Core 反向工程和模型可视化扩展插件

    前言 在 EF 6 及其之前的版本数据库优先模式(Database First)是可以在 Visual Studio 中通过可视化界面来操作完成的,但是到了 EF Core 之后就不再支持了(因为模型 ...

  7. 直播预约丨《袋鼠云大数据实操指南》No.3:数据资产管理实操,如何有效进行数据治理

    近年来,新质生产力.数据要素及数据资产入表等新兴概念犹如一股强劲的浪潮,持续冲击并革新着企业数字化转型的观念视野,昭示着一个以数据为核心驱动力的新时代正稳步启幕. 面对这些引领经济转型的新兴概念,为了 ...

  8. pg 批量更改拥有者

    记录一下. 为什么会有这个问题的原因是因为执行用的是管理员用户,pg默认拥有者是执行sql的用户也就是管理员,这样会导致创建的用户会没有这个表的权限 查询出sql语句复制直接执行就行 SELECT ' ...

  9. java PriorityQueueTest.java

    简介 优先级队列内部采用大顶堆或者小顶堆实现 code import java.util.*; import java.time.*; public class PriorityQueueTest { ...

  10. 3.1k star!推荐一款开源基于AI实现的浏览器自动化插件工具 !

    大家好!今天,我要给大家介绍一款超实用的开源工具--Chrome MCP Server!这款工具不仅能大幅提升我们的工作效率,还能让AI助手(如Claude)直接操控浏览器,实现自动化操作.内容分析等 ...