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. pytest.mark.parametrize 传参

    pytest.mark.parametrize 是pytest用来参数化测试的一个装饰器,它允许你为测试函数或测试类提供多组参数list, 这样就可以使用每组参数执行测试函数或测试类,实现参数化驱动, ...

  2. 全国省市json文件

    [ { "label": "北京市", "value": "北京市", "children": [ ...

  3. docker pull镜像加速

    配置说明 $ vim /etc/docker/daemon.json { "registry-mirrors": [ "https://ustc-edu-cn.mirro ...

  4. equals与==与hashCode的区别与联系

    equals与hashcode的区别与联系 1."=="与equals的区别与联系 (1)"=="对于基本数据类型,只要值相等,就返回true,否则返回fals ...

  5. TinyVue 智能组件库:基于 MCP 协议,实现 AI 代替人操作 Web 组件

    你好,我是 Kagol,个人公众号:前端开源星球. 2025年6月21日,我在华为开发者大会2025(HDC2025)开源论坛做了一场主题分享,给开发者们介绍我们 OpenTiny 团队基于 MCP ...

  6. 【公开课】芯片ATE测试—93K机台与Smartest软件介绍

    当前,随着中国集成电路产业的高速发展,芯片测试作为确保产品良率与可靠性的关键环节,其技术人才缺口日益凸显.尤其在测试设备操作层面,行业普遍面临两大痛点: 一方面,高端ATE测试平台(如93K系统)操作 ...

  7. Kong入门学习实践(8)流量控制插件

    Kong的一大特色就在于强大的可扩展性,具体实现方式就是插件.一来Kong已经提供了很多内置的插件,二来我们也可以使用Lua语言自定义开发插件.今天,我们就来了解一些常用的流量控制插件. 关于流量控制 ...

  8. SpringBoot--如何整体读取多个配置属性及其相关操作

    上篇文章讲到使用@Value注解每次只能读取一个配置属性,若要整体读取多个属性,或者读取具有某种结构关系的一组属性可使用@ConfigurationProperties注解来处理. @Configur ...

  9. AtCoder Beginner Contest 187 ABCDE 题解

    A - Large Digits 思路:签到题,读入字符串即可. view code #include<iostream> #include<string> #include& ...

  10. 用C++标准库的方式使用堆

    简介 RT 参考链接 https://github.com/lishaohsuai/digital_geo/blob/master/Surface_Framework_VS2017/SurfaceMe ...