4.1Commons-langAPI介绍4.1.1StringUtils4.1.2StringEscapeUtils4.1.3ArrayUtils4.1.4DateUtils4.1.5DateFormatUtils4.1.6RandomUtils4.1.7NumberUtils4.1.8FieldUtils4.1.9CharUtils4.1.10BooleanUtils4.1.11ExceptionUtils1StringUtils方法介绍StringUtils是提供字符串操作的工具类。提供的方法如下:1publicstaticbooleanisEmpty(Stringstr);说明:如果参数str为NULL或者str.length()==0返回true对比:JDK中类String的方法publicbooleanisEmpty()此方法通过判断私有变量count是否等于0来进行判断。2publicstaticbooleanisNotEmpty(Stringstr)说明:判断给定参数是否不为空,其实现方式利用了方法一:!isEmpty(str);对比:JDK中String类无此方法。3publicstaticbooleanisBlank(Stringstr);说明:如果参数str为NULL或者其长度等于0,又或者其由空格组成,那么此方法都返回true。对比:JDK中String类无此方法。4publicstaticbooleanisNotBlank(Stringstr);说明:利用方法三实现。5publicstaticStringtrim(Stringstr);说明:去除字符串开头和结尾处的空格字符。如果参数str为null,则返回null.对比:利用JDK中String类的trim()方法。6publicstaticStringstripStart(Stringstr,StringstripChars);说明:去掉str前端的在stripChars中的字符7publicstaticStringstripEnd(Stringstr,StringstripChars);说明:去掉str末端的在stripChars中的字符8publicstaticintordinalIndexOf(Stringstr,StringsearchStr,intordinal)说明:返回字符串search在字符串str中第ordinal次出现的位置。如果str=null或searchStr=null或ordinal=0则返回-1.4.1.2StringEscapeUtilsStringEscapeUtils这个类里提供了很多转义的方法,比如可以转成json、xml、html等格式。1publicstaticStringescapeJava(Stringstr);说明:使用javaStringrules转义给定字符串str.正确处理引号和控制字符(如,tab,backslash,cr,ff等).因此,一个tab符号转义成’\\t’.2publicstaticStringescapeJavaScript(Stringstr)说明:同方法1.唯一区别是,在javaScript中,单引号必须被转义。4.1.3ArrayUtils1.final变量EMPTY_*_ARRAY:根据*处的类型,返回对应的长度为0的数组。注意原始变量及其包裹类。INDEX_NOT_FOUND:返回-1,表述数组下标未找到。2.toString(Object,[,stringIfNull]):如果为空,返回stringIfnULL3.hashCode(Object):使用HashCodeBuilder返回数组的hashcode4.isEquals(Object1,Object2):用EqualsBuilder返回两个数组比较的结果。5.toMap(Object[]):作为参数的数组有两个选择,一是成员为Map.Entry,然后通过遍历该数组,把Map.Entry拆分并分别放入新生成Map的Key和Value中;二是成员为长度大于等于2的数组,位置0的元素作为key,位置1的元素作为value。除了以上两种情况,会抛出异常。6.clone族Object[]:如果不为空,则使用参数自己的clone方法处理。Long[],int[],short[],char[],byte[],double[],float[],Boolean[]同上。7.subarray族Object[],start,end:Object[],start,end:如果不为空,start小于0,取0;end大于长度,取长度。如果start大于end,则用Array.newInstance返回一个空的对象数组,其类型由参数的getClass().getComponentType()决定。否则同样定义一个长度为end-start的数组,使用System.arraycopy进行数组的拷贝。8.isSameLength族略.9.isSameTypeObject1,Object2:如果一方为空,抛出IllegalArgumentException.否则根据getClass().getName()比较两个参数的类名是否相同.10.reverse族Object[]:从数组前后两个坐标i,j开始,交换数据,并向中间移动。当ij时停止。11.下标查找族11.1indexOfObject[],object[,startIndex]:Object[]为空,则返回-1,。如果startIndex小于0,则置为0.如果object为空,则从数组的第一个位置开始找第一个为空的数据。否则,利用Object.equals()方法正向遍历数组,获取匹配的下标并返回。否则返回-1.4.1.4DateUtils1staticfinalMILLIS_PER_SECOND=1000;一秒等于1000毫秒MILLIS_PER_MINUTE=60*MILLIS_PER_SECOND;一分钟等于多少毫秒MILLIS_PER_HOUR=60*MILLIS_PER_MINUTE;一小时等于多少毫秒MILLIS_PER_DAY=24*MILLIS_PER_HOUR;一天等于多少毫秒2日期比较publicstaticbooleanisSameDay(Datedate1,Datedate2);publicstaticbooleanisSameDay(Calendarcal1,Calendarcal2);比较日期是否相同,忽略time具体是通过比较Calendar.ERA、YEAR、DAY_OF_YEAR三个属性判断给定日期是否相同.3时间比较publicstaticbooleanisSameInstant(Datedate1,Datedate2);publicstaticbooleanisSameInstant(Calendarcal1,Calendarcal2);比较时间是否相同.具体是通过Date类中的getTime()方法的。4ADD族publicstaticDateaddYears(Datedate,intamount);在给定日期date的基础上添加amount年,注意,函数返回新的对象;以下同上。addMonths();//月addWeeks();//周addDays();//日addHours();//小时addMinutes();//分钟addSeconds();//秒addMilliseconds();//毫秒5set族publicstaticDatesetYears(Datedate,intamount);为date设置新的年份信息,并返回一个新的对象,对象date未发生改变.以下方法同上。setMonths();//设置月份setDays();//设置日期setHours();//设置小时setMinutes();//设置分钟setSeconds();//设置秒setMilliseconds();//设置毫秒6round族、truncate族、ceil族日期取整(日期精度调节,如调节至秒/分等)Dateround(Datedate,intfield);DateUtils.round()相当于数学中的四舍五入法取整Datetruncate(Datedate,intfield);DateUtils.truncate()相当与去余法取整。Dateceiling(Datedate,intfield);DateUtils.ceiling()相当于向上取整。能对Calendar类中几乎所有的field做日期取整,包括Calender.YEAR,Calendar.SECOND,Calendar.MINUTE,Calendar.HOUR,Calendar.DAY_OF_MONTH,Calendar.MONTH.4.1.5DateFormatUtils与SUN的SimpleDateFormat相比,其主要优点是:线程安全。对应于SimpleDateFormat的format()的方法,是DateFormatUtils的format系列方法,常用的就是:publicstaticjava.lang.Stringformat(java.util.Datedate,java.lang.Stringpattern);DateFormatUtils定义了很多内置的固定日期格式,均为FastDateFormat类型,比如ISO_DATE_FORMAT。使用FastDateFormat的format()方法可以直接将日期格式化为内置的固定格式。publicjava.lang.Stringformat(java.util.Datedate)4.1.6RandomUtils随机数据生成类,包括浮点,双精,布尔,整形,长整在内的随机数生成RandomUtils.nextInt();采用默认的JVMRandom类,数值范围0~2147483647nextInt(Randomrandom);也可以设置其他的random还支持以下方法:nextLong();nextBoolean();nextFloat();nextDouble();4.1.7NumberUtils为JDK中的Number类提供额外的功能。提供可复用的值为0,1的数值型的包装类。包括Long、Integer、Short、Byte、Double、Float。toXXX(Stringstr[,XXX])族将给定的字符串装换成XXX代表的数值类型,包括Long\Integer\Short\Byte\Double\Float。如果指定了默认值XXX,那么当String为空,或是转换发生异常,则返回指定的默认值XXX。createXXX(String)族用给定的字符串创建XXX数值类型的对象。包括Float\Double\Integer\Long\BigInteger\BigDecimalXXXmin(XXX[])族从类型为XXX的数组中找出最小的。XXX可为long\float\double\byte\short\int时间复杂度是O(n).XXXmax(XXX[])族同min族。4.1.8FieldUtils通过反射技术来操作成员变量。1getField族FieldgetField(Class?,String[,Boolean]);FieldgetDeclaredField(Class?,String[,Boolean]);说明:getField:GetsanaccessibleFieldbynamebreakingscopeifrequested.当前类的接口和和父类都会被考虑。getDeclaredField:anaccessibleFieldbynamerespectingscope.仅当前类被考虑。2readField族readStaticField(Field[,boolean]);readStaticFie