概览
Lang 为 java.lang API 提供了大量辅助工具类,尤其是字符串操作方法,基本数值方法,对象反射,并发性,创建和序列化以及系统属性。 此外,它还包含对java.util.Date的基本增强功能以及一系列专用于帮助构建方法的工具集。
顶层包包含各种Utils类,同时还有各种子包,除了CharSet基本都是线程安全的:
- 字符串操作–StringUtils,StringEscapeUtils,RandomStringUtils
- 字符处理 - CharSetUtils,CharSet,CharRange,CharUtils
- JVM交互 - SystemUtils,CharEncoding
- 序列化 - SerializationUtils,SerializationException
- 分类函数 - ObjectUtils,ClassUtils,ArrayUtils,BooleanUtils
- 其它 - BitField, Validate
包
包 | 介绍 |
---|---|
org.apache.commons.lang3 | 提供高复用的静态工具方法,主要涉及为 java.lang 类添加值。 |
org.apache.commons.lang3.arch | 提供类来处理os.arch系统属性的值。 |
org.apache.commons.lang3.builder | 协助创建一致的 equals(Object) , toString() , hashCode() 和compareTo(Object) 方法。 |
org.apache.commons.lang3.concurrent | 为多线程编程提供支持类。 |
org.apache.commons.lang3.event | 提供一些有用的基于事件的工具。 |
org.apache.commons.lang3.exception | 为例外提供功能。 |
org.apache.commons.lang3.math | 继承 java.math 提供商业数学类。 |
org.apache.commons.lang3.mutable | 基本类型和封装类的类型化的封装,取值、自增等 |
org.apache.commons.lang3.reflect | 收集 java.lang.reflect API的常见高级用法。 |
org.apache.commons.lang3.text | 本包已弃用,被 commons-text 替代 |
org.apache.commons.lang3.time | 提供使用日期和久期的类和方法。 |
org.apache.commons.lang3.tuple | 元组类,Pair、Triple。 |
一. org.apache.commons.lang3 顶层包
类 | 介绍 |
---|---|
AnnotationUtils | 注解工具,为注解实例提供equals/hashCode/toString等方法 |
ArchUtils | 返回JVM的os.arch属性 |
ArrayUtils | 数组工具类,详情后列 |
BitField | 用于操作Bit:类实例可以存储一个flag或int,short,byte数据。 |
BooleanUtils | 布尔工具类:逻辑运算,判断真假 |
CharSequenceUtils | 提供了一个取CharSequence接口子序列的方法 |
CharSet | CharSet 字符集 |
CharSetUtils | 字符集工具类:增删、包含判断 |
CharUtils | 字符工具类:类型判断、转换 |
ClassPathUtils | 类路径工具:获取、拼接类路径 |
ClassUtils | 在不使用反射的情况下操作类:获取类属性。类判断、类转换。 |
Conversion | 类型转换:binary、byte、int 、long 、hex、hexDigit、uuid |
EnumUtils | 枚举工具:获取、验证 |
LocaleUtils | Locale工具类:获取环境信息、语言信息等 |
ObjectUtils | 类工具:克隆、比较、永久化、toString |
ObjectUtils.Null | null 占位符:区分值为null和不存在 |
RandomStringUtils | 生成简单随机字符串,高级用法请使用commons-text的RandomStringGenerator。 |
RandomUtils | 生成随机boolean,byte,double,float,int,long。0到最大值,或指定范围。 |
Range |
包含不可变范围的对象:范围判断。 |
SerializationUtils | 序列化工具:可用于深度克隆 |
StringUtils | 字符串工具,详情后列 |
SystemUtils | 系统工具类:获取java系统属性 |
ThreadUtils | 线程工具类:查找或获取线程、线程组 |
Validate | 验证工具:开闭区间判断、值判断、继承链判断等,各种校验方法,可以自定义提示语 |
(1)ArrayUtils
操作数组,基本类型数组和对象数组。
- add/addAll - 添加
- clone - 浅层克隆
- contains - 包含
- isEmpty/isNotEmpty - 判空
- nullToEmpty - 空数组转换。
- remove/removeAll/removeAllOccurences/removeElement/removeElements - 各种删除
- reverse - 反转
- subarray - 截取
- toMap - 转换为 HashMap,数组类型必须为 Map.Entry 或 Array,其中 Array 长度不小于2
- toObject/toPrimitive - 装箱/拆箱
(2)StringUtils
null safe,线程安全
- IsEmpty/IsBlank - 判空。isEmpty只判断 empty (“”) or null,IsBlank还包括whitespace(" ")
- Trim/Strip - 去头尾空。trim null处理为 null,strip null处理为 “”
- Equals/Compare - 比较。
- IndexOf/LastIndexOf/Contains - 查询。
- IndexOfAny/LastIndexOfAny/IndexOfAnyBut/LastIndexOfAnyBut - 各种查询。
- ContainsOnly/ContainsNone/ContainsAny - 包含。只/未/任意包含
- Substring/Left/Right/Mid - 截取。按下标,取左、取右、取中间
- SubstringBefore/SubstringAfter/SubstringBetween - 截取。按字符串,取左、取右、取中间
- Split/Join - 分割。用字符串而不是正则。速度快。
- Remove/Delete - 删除。匹配/指定
- Replace/Overlay - 替换。非正则
- UpperCase/LowerCase/SwapCase/Capitalize/Uncapitalize - 转换系列
- IsAlpha/IsNumeric/IsWhitespace/IsAsciiPrintable - 判断
- Reverse/ReverseDelimited - 反转
- Abbreviate - 缩略。“XXXX……”
- center(String str, int size, char padChar) StringUtils.center(“中间”,20,“=”)//========中间========
二. org.apache.commons.lang3.concurrent 包常用类
java.util.concurrent的扩展,多线程编程支持类。 线程安全。
多线程对象创建和初始化器:
- ConcurrentInitializer
- ConcurrentInitializer 接口,**get()**方法返回创建好并初始化的对象 - ConstantInitializer
- ConcurrentInitializer 接口的简单实现 - LazyInitializer
- ConcurrentInitializer 接口的懒初始化实现 - AtomicInitializer
/AtomicSafeInitializer - 与LazyInitializer相似,内部使用原子变量,无需同步 - BackgroundInitializer
/MultiBackgroundInitializer - 后台初始化/并行后台初始化
提供线程工具
- ConcurrentUtils - extractCause/handleCause/extractCauseUnchecked方法处理异常
- TimedSemaphore - 时钟信号,可限制资源访问时限
三. org.apache.commons.lang3.math 包常用类
此包扩展了 java.math,侧重于业务,Apache Commons中还有另一个Commons Math包,侧重于科学计算。
这些类是不可变的,因此是线程安全的。
(1)Fraction
处理分数。
static Fraction getFraction(double value)//由double创建分数
static Fraction getFraction(int numerator, int denominator)//创建Y/Z分数
static Fraction getFraction(int whole, int numerator, int denominator)//创建X Y/Z分数
static Fraction getFraction(String str)//由String创建分数
static Fraction getReducedFraction(int numerator, int denominator)//创建约简分数
-
处理分数
- doubleValue/floatValue/intValue/longValue - 取值
- getNumerator/getDenominator - 取分子/分母
- add/subtract/multiplyBy/divideBy/pow - 加/减/乘/除/积
- compareTo/equals - 比较
- abs - 取绝对值
- invert - 取倒数
(2)IEEE754rUtils
IEEE浮点数算术标准的各种max、min方法
static double max(double... array)
static double max(double a, double b, double c)
……
(3)NumberUtils
NumberUtils.createNumber(String)会最大限度地将String转换为Number对象,使用时应调用xxxValue方法返回具体类型。 还有一个相关的NumberUtils.isCreatable(String)方法。
- createBigDecimal/createBigInteger/createDouble/createFloat/createInteger/createLong - createNumber
- createNumber/isCreatable/isParsable - 创建数字/是否可建/是否可解析
- isDigits - 是否只含数字
- max/min - 各种max、min
- toByte/toDouble/toFloat/toInt/toLong/toShort - 转换格式
- compareTo - 比较
四. org.apache.commons.lang3.reflect 包常用类
- ConstructorUtils - 构造器反射:获取、调用构造器
- FieldUtils - 字段反射:读写字段、去除字段
- InheritanceUtils - 继承反射:distance(Class, Class)返回两个类之间的继承跳数。
- MethodUtils - 方法反射,源于Commons BeanUtils:获取指定方法、方法列表,调用方法、静态方法
- TypeUtils - 类型反射:类型检查,转换与封装
五. org.apache.commons.lang3.time 包常用类
- DateFormatUtils - 日期格式化与常量
- DateUtils - 日历、日期计算
- DurationFormatUtils - 区间常量与工具
- FastDateFormat/FastDateParser/FastDatePrinter - SimpleDateFormat的快速和线程安全版本
- FastTimeZone - 快速生成自定义时区
- StopWatch - 计时器工具
- TimeZones - 时区工具