读源码:commons-lang2.4

来源:互联网 发布:青岛seo网络优化 编辑:程序博客网 时间:2024/06/06 12:21

ArrayUtils

ArrayUtils 提供了数组的处理功能,包括:复制,查找,获取子数组,反转等功能。参考我写的另外一篇文章:读源码:commons-lang2.4的ArrayUtils类

StringUtils

StringUtils 该类主要提供对字符串的操作,对null是安全的,主要提供了字符串查找,替换,分割,组合,反转,增删空白,去掉非法字符,简单判断等等操作。参考我写的另外一篇文章: 读源码:commons-lang2.4的StringUtils类

ObjectUtils

ObjectUtils 主要对Object的扩展,如同前面的套路,先写了一个NULL的空类型。重写了基本的equals、hashCode、toString增加了对null的处理。增加了
Object defaultIfNull(Object object, Object defaultValue):如果为空对Object的复制
String identityToString(Object object):基本是生成一个唯一判断一个对象的字符串
Object min/max(Comparable c1, Comparable c2):比较两个对象的大小,前提是类实现了Comparable接口

SystemUtils

SystemUtils 重点用的是 getJavaHome(),getJavaIoTmpDir(),getUserDir(),getUserHome()这几个方法,分别返回java的home,java的临时路径,当前用户路径,用户的主目录。更主要的应该关注一下JDK里面的System类。

DateUtils

DateUtils 主要提供了对日期的操作,包括日期加减,日期格式化,日期比较,一定时间范围内日期的迭代等等
isSameDay:判断是否是同一天,可传入Data或者Calendar
isSameInstant:判断两个时间点是否是同一个时间点,精确到毫秒的
isSameLocalTime:判断两个日期是否是相同的本地时间
Date parseDate(String str, String[] parsePatterns):将日期的str转换为parsePatterns格式中的样子,有一个匹配则返回。parsePatterns格式参考SimpleDateFormat类
Date addYears(Date date, int amount):增加几年返回个日期,同理的 addMonths,addWeeks,addDays,addHoursaddMinutes,addMinutes,addSeconds,addMilliseconds
Date setYears(Date date, int amount):设置年为amount,同理的set就和上面差不多
Date round(Date date, int field):四舍五入某个日期,field输入的是Calendar的field(毫秒,秒,分钟,日,月,年等)
Date truncate(Date date, int field):与上一个不同的,这个是截断日期,将field后不要的全部置零
Iterator iterator(Date focus, int rangeStyle):获取日期的周围的某个格式的一些天的迭代器。rangeStyle是本类提供的一些RANGE_MONTH_SUNDAY、RANGE_MONTH_MONDAY、RANGE_WEEK_CENTER等。通俗的举个例子,获取八月份的所有星期天:将Date传一个八月的时间,rangeStyle传入DateUtils.RANGE_MONTH_SUNDAY即可返回对应时间的迭代器。
long getFragmentInMilliseconds(Date date, int fragment):返回指定分段内的毫秒数 。 所有大于分段的DateFields将被忽略 。fragment也是Calendar的那些field: Calendar.YEAR、Calendar.MONTH、Calendar.DAY_OF_YEAR、Calendar.DATE、Calendar.HOUR_OF_DAY、Calendar.MINUTE、 Calendar.SECOND 和 Calendar.MILLISECOND

DateFormatUtils

和DateUtils配合使用,通常用的方法是:String format(Date date, String pattern)就可以了,其他的用的时候再参考

DurationFormatUtils

主要用来计算两个时间的间隔

StopWatch

StopWatch 提供秒表的计时,暂停等功能
start秒表的开始;stop停止;
reset重置秒表;
split瞬间几下一个时间,可用getSplitTime读取出来;
unsplit移除那个瞬间记时
suspend暂时记时,resume恢复暂时
getTime获取秒表当前时间

CompareToBuilder/EqualsBuilder/HashCodeBuilder/ToStringBuilder

都提供了相对方便灵活的方法来重写类的compare、equals、hashcode、toString方法
举例:重写某个类的hashCode方法

return new HashCodeBuilder(17, 37).        append(name).        append(age).        append(smoker).        toHashCode();、

ExceptionUtils 略

*Range

以Range结尾的类都继承了抽象类Range,所以基本操作都是以下这些:
获取最小值:getMinimumNumber、getMinimumLong、getMinimumInteger、getMinimumDouble、getMinimumFloat等
获取最大值同理
判断包含操作:containsNumber、containsDouble、containsRange等

Fraction分数类

先认识两个单词:numerator分子 denominator分母
本类采用的工厂方法来获取分数类:
Fraction getFraction(int numerator, int denominator):Y/Z
Fraction getFraction(int whole, int numerator, int denominator):X Y/Z 假分数
Fraction getReducedFraction(int numerator, int denominator):获取化简后的分数
Fraction getFraction(double value):根据double来获取一个分数
Fraction getFraction(String str):根据str来获取一个分数,str格式为:X Y/Z或者Y/Z或者一个整数X

Fraction reduce():化简
Fraction invert():倒数
Fraction negate():取负
Fraction abs():求绝对值
Fraction pow(int power):乘方
Fraction add(Fraction fraction):加
Fraction subtract(Fraction fraction):减
Fraction multiplyBy(Fraction fraction):乘
Fraction divideBy(Fraction fraction):除

IEEE754rUtils类

IEEE754主要用来表示计算机的浮点数。具体细节不再追究:Java与IEEE754浅浅谈

RandomUtils

方便,不用new。可以直接调用 nextInt()之类的,建议多多使用

Mutable

八大基本类型分别实现了这个接口,然后有了MutableBoolean、MutableByte等。
因为八大基本类型本身是不可变的,有了不可变的之这些类就有了不可变的应用场景,虽然我也不知道有什么应用场景。

text包

这几个包当我用到的时候再来看下吧,先记下作用:
CompositeFormat对format进行封装的,适用不同的format
ExtendedMessageFormat是对java.text.MessageFormat的扩展
StrBuilder比StringBuffer/StringBuilder更灵活强大
StrSubstitutor可以适用简单的格式化字符串,比freemarker轻量简单
StrTokenizer字符分割解析器

BitField

用于操作位元,提供了一些方便而安全的方法

BooleanUtils

提供了对boolean的操作,可以转换boolean,根据boolean输出相应的值,还有可以对一组boolean进行异或运算等

CharSet/CharSetUtils

CharSet维护了挺多固定的要使用的char集合,可以进行contains等操作
CharSetUtils基于CharSet进行的操作:
squeeze挤压可以将某些符合条件的字符只留一个
count计算符合条件的字符有多少个
keep只保留符合条件的字符
delete删除符合条件的字符

CharUtils

操作char和Character对象的,可以转换为固定的ascii值,判断是否是ascii,是否是ascii可打印值等等

ClassUtils

对class的操作,可 获取短class名,获取包名,获取所有父类,获取所有接口,将类名转换为Class,getCanonicalName可以返回更容易理解的名字,isAssignable判断继承,primitiveToWrapper基本类型到包装类型,isInnerClass是否是内部类

RandomStringUtils

产生随机的字符串字符,中文情况不是很好

WordUtils

顾名思义:对单词的处理
capitalize每个首字母大写,capitalizeFully全部转换为大写
小写uncapitalize同理
swapCase把大写变小写,小写变大写
initials首字母缩写:
WordUtils.initials(“Ben John Lee”) = “BJL”
WordUtils.initials(“Ben J.Lee”) = “BJ”//符合国外习惯
abbreviate简写

原创粉丝点击