Java核心类——9.常用工具类
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_DATE(yyyy-MM-dd)、ISO_LOCAL_TIME(HH:mm:ss)等。
Java核心类——9.常用工具类的更多相关文章
- Java项目案例之---常用工具类练习
常用工具类练习 1. 请根据控制台输入的特定日期格式拆分日期,如:请输入一个日期(格式如:**月**日****年),经过处理得到:****年**月**日 import java.util.Scanne ...
- 最全面的Java字节byte操作,处理Java基本数据的转换及进制转换操作工具,流媒体及java底层开发项目常用工具类
前言:用于处理Java基本数据的转换及进制转换操作工具 一.实现功能 1.int与byte互转 2.int与byte[]互转 3.short与byte互转 4.short与byte[]互转 5.16位 ...
- 廖雪峰Java2面向对象编程-6Java核心类-6常用工具类
1.Math Math提供了数学计算的静态方法 序号 方法 描述 1 abs() 返回参数的绝对值.Math.abs(-9)//9 2 ceil() 返回大于等于( >= )给定参数的的最小整数 ...
- (转)JAVA 十六个常用工具类
一. org.apache.commons.io.IOUtils closeQuietly 关闭一个IO流.socket.或者selector且不抛出异常.通常放在finally块 toString ...
- JAVA常用工具类汇总
一.功能方法目录清单: 1.getString(String sSource)的功能是判断参数是否为空,为空返回"",否则返回其值: 2.getString(int iSource ...
- JavaEE-实验一 Java常用工具类编程
该博客仅专为我的小伙伴提供参考而附加,没空加上代码具体解析,望各位谅解 1. 使用类String类的分割split 将字符串 “Solutions to selected exercises ca ...
- 简单了解Spring中常用工具类_java - JAVA
文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 文件资源操作 Spring 定义了一个 org.springframework.core.io.Resource 接口, ...
- [转]Java常用工具类集合
转自:http://blog.csdn.net/justdb/article/details/8653166 数据库连接工具类——仅仅获得连接对象 ConnDB.java package com.ut ...
- 项目经验分享——Java常用工具类集合 转
http://blog.csdn.net/xyw591238/article/details/51678525 写在前面 本文涉及的工具类部分是自己编写,另一部分是在项目里收集的.工具类涉及数 ...
- Java常用工具类之删除文件
package com.wazn.learn.util; import java.io.File; /** * 删除文件工具类 * @author yangzhenyu * */ public cla ...
随机推荐
- pytest.mark.parametrize 传参
pytest.mark.parametrize 是pytest用来参数化测试的一个装饰器,它允许你为测试函数或测试类提供多组参数list, 这样就可以使用每组参数执行测试函数或测试类,实现参数化驱动, ...
- 全国省市json文件
[ { "label": "北京市", "value": "北京市", "children": [ ...
- docker pull镜像加速
配置说明 $ vim /etc/docker/daemon.json { "registry-mirrors": [ "https://ustc-edu-cn.mirro ...
- equals与==与hashCode的区别与联系
equals与hashcode的区别与联系 1."=="与equals的区别与联系 (1)"=="对于基本数据类型,只要值相等,就返回true,否则返回fals ...
- TinyVue 智能组件库:基于 MCP 协议,实现 AI 代替人操作 Web 组件
你好,我是 Kagol,个人公众号:前端开源星球. 2025年6月21日,我在华为开发者大会2025(HDC2025)开源论坛做了一场主题分享,给开发者们介绍我们 OpenTiny 团队基于 MCP ...
- 【公开课】芯片ATE测试—93K机台与Smartest软件介绍
当前,随着中国集成电路产业的高速发展,芯片测试作为确保产品良率与可靠性的关键环节,其技术人才缺口日益凸显.尤其在测试设备操作层面,行业普遍面临两大痛点: 一方面,高端ATE测试平台(如93K系统)操作 ...
- Kong入门学习实践(8)流量控制插件
Kong的一大特色就在于强大的可扩展性,具体实现方式就是插件.一来Kong已经提供了很多内置的插件,二来我们也可以使用Lua语言自定义开发插件.今天,我们就来了解一些常用的流量控制插件. 关于流量控制 ...
- SpringBoot--如何整体读取多个配置属性及其相关操作
上篇文章讲到使用@Value注解每次只能读取一个配置属性,若要整体读取多个属性,或者读取具有某种结构关系的一组属性可使用@ConfigurationProperties注解来处理. @Configur ...
- AtCoder Beginner Contest 187 ABCDE 题解
A - Large Digits 思路:签到题,读入字符串即可. view code #include<iostream> #include<string> #include& ...
- 用C++标准库的方式使用堆
简介 RT 参考链接 https://github.com/lishaohsuai/digital_geo/blob/master/Surface_Framework_VS2017/SurfaceMe ...