一、commons.lang中有哪些常用的工具
一、前言
Java码农不识Apache,敲尽一生也枉然。旗下的开源项目众多,各个都是吊炸天。今日且说Commons,轻轻点击此链接进入Apache Commons主页,Logging、Pool、Net、ONGL、EL、IO、DBCP、Email、Collection、Lang……等等项目中常用到的包。而这篇文章的主角Lang则是我们最常用的工具作为jdk的补充,怎能不去详细探究一番!
二、字符串的处理类(StringUtils)
org.apache.commons.lang3.StringUtils继承Object,Operations onStringthat arenullsafe。所谓的null safe就是对String进行操作不会出现NullPointerException异常,很实用有没有!以后再也不怕到处出现空指针异常了。先看看官方文档中这个类都有些什么方法:
这些方法基本上看方法名,就能猜出它大概的作用了。
//缩短到某长度,用...结尾.其实就是(substring(str,0,max-3)+"...")
//publicstaticStringabbreviate(Stringstr,intmaxWidth)
StringUtils.abbreviate("abcdefg",6);//---"abc..."
//字符串结尾的后缀是否与你要结尾的后缀匹配,若不匹配则添加后缀
StringUtils.appendIfMissing("abc","xyz");//---"abcxyz"
StringUtils.appendIfMissingIgnoreCase("abcXYZ","xyz");//---"abcXYZ"
//首字母大小写转换
StringUtils.capitalize("cat");//---"Cat"
StringUtils.uncapitalize("Cat");//---"cat"
//字符串扩充至指定大小且居中(若扩充大小少于原字符大小则返回原字符,若扩充大小为负数则为0计算)
StringUtils.center("abcd",2);//---"abcd"
StringUtils.center("ab",-1);//---"ab"
StringUtils.center("ab",4);//---"ab"
StringUtils.center("a",4,"yz");//---"yayz"
StringUtils.center("abc",7,"");//---"abc"
//去除字符串中的"\n","\r",or"\r\n"
StringUtils.chomp("abc\r\n");//---"abc"
//判断一字符串是否包含另一字符串
StringUtils.contains("abc","z");//---false
StringUtils.containsIgnoreCase("abc","A");//---true
//统计一字符串在另一字符串中出现次数
StringUtils.countMatches("abba","a");//---2
//删除字符串中的梭有空格
StringUtils.deleteWhitespace("abc");//---"abc"
//比较两字符串,返回不同之处。确切的说是返回第二个参数中与第一个参数所不同的字符串
StringUtils.difference("abcde","abxyz");//---"xyz"
//检查字符串结尾后缀是否匹配
StringUtils.endsWith("abcdef","def");//---true
StringUtils.endsWithIgnoreCase("ABCDEF","def");//---true
StringUtils.endsWithAny("abcxyz",newString[]{null,"xyz","abc"});//---true
//检查起始字符串是否匹配
StringUtils.startsWith("abcdef","abc");//---true
StringUtils.startsWithIgnoreCase("ABCDEF","abc");//---true
StringUtils.startsWithAny("abcxyz",newString[]{null,"xyz","abc"});//---true
//判断两字符串是否相同
StringUtils.equals("abc","abc");//---true
StringUtils.equalsIgnoreCase("abc","ABC");//---true
//比较字符串数组内的所有元素的字符序列,起始一致则返回一致的字符串,若无则返回""
StringUtils.getCommonPrefix(newString[]{"abcde","abxyz"});//---"ab"
//正向查找字符在字符串中第一次出现的位置
StringUtils.indexOf("aabaabaa","b");//---2
StringUtils.indexOf("aabaabaa","b",3);//---5(从角标3后查找)
StringUtils.ordinalIndexOf("aabaabaa","a",3);//---1(查找第n次出现的位置)
//反向查找字符串第一次出现的位置
StringUtils.lastIndexOf("aabaabaa",'b');//---5
StringUtils.lastIndexOf("aabaabaa",'b',4);//---2
StringUtils.lastOrdinalIndexOf("aabaabaa","ab",2);//---1
//判断字符串大写、小写
StringUtils.isAllUpperCase("ABC");//---true
StringUtils.isAllLowerCase("abC");//---false
//判断是否为空(注:isBlank与isEmpty区别)
StringUtils.isBlank(null);StringUtils.isBlank("");StringUtils.isBlank("");//---true
StringUtils.isNoneBlank("","bar");//---false
StringUtils.isEmpty(null);StringUtils.isEmpty("");//---true
StringUtils.isEmpty("");//---false
StringUtils.isNoneEmpty("","bar");//---true
//判断字符串数字
StringUtils.isNumeric("123");//---false
StringUtils.isNumeric("123");//---false(不识别运算符号、小数点、空格……)
StringUtils.isNumericSpace("123");//---true
//数组中加入分隔符号
//StringUtils.join([1,2,3],';');//---"1;2;3"
//大小写转换
StringUtils.upperCase("aBc");//---"ABC"
StringUtils.lowerCase("aBc");//---"abc"
StringUtils.swapCase("ThedoghasaBONE");//---"tHEDOGHASAbone"
//替换字符串内容……(replacePattern、replceOnce)
StringUtils.replace("aba","a","z");//---"zbz"
StringUtils.overlay("abcdef","zz",2,4);//---"abzzef"(指定区域)
StringUtils.replaceEach("abcde",newString[]{"ab","d"},
newString[]{"w","t"});//---"wcte"(多组指定替换ab->w,d->t)
//重复字符
StringUtils.repeat('e',3);//---"eee"
//反转字符串
StringUtils.reverse("bat");//---"tab"
//删除某字符
StringUtils.remove("queued",'u');//---"qeed"
//分割字符串
StringUtils.split("a..b.c",'.');//---["a","b","c"]
StringUtils.split("ab:cd:ef",":",2);//---["ab","cd:ef"]
StringUtils.splitByWholeSeparator("ab-!-cd-!-ef","-!-",2);//---["ab","cd-!-ef"]
StringUtils.splitByWholeSeparatorPreserveAllTokens("ab::cd:ef",":");//-["ab","","cd","ef"]
//去除首尾空格,类似trim……(stripStart、stripEnd、stripAll、stripAccents)
StringUtils.strip("abc");//---"abc"
StringUtils.stripToNull(null);//---null
StringUtils.stripToEmpty(null);//---""
//截取字符串
StringUtils.substring("abcd",2);//---"cd"
StringUtils.substring("abcdef",2,4);//---"cd"
//left、right从左(右)开始截取n位字符
StringUtils.left("abc",2);//---"ab"
StringUtils.right("abc",2);//---"bc"
//从第n位开始截取m位字符nm
StringUtils.mid("abcdefg",2,4);//---"cdef"
StringUtils.substringBefore("abcba","b");//---"a"
StringUtils.substringBeforeLast("abcba","b");//---"abc"
StringUtils.substringAfter("abcba","b");//---"cba"
StringUtils.substringAfterLast("abcba","b");//---"a"
StringUtils.substringBetween("tagabctag","tag");//---"abc"
StringUtils.substringBetween("yabczyabcz","y","z");//---"abc"
三、其它类简介
RandomStringUtils:
//随机生成n位数数字
RandomStringUtils.randomNumeric(n);
//在指定字符串中生成长度为n的随机字符串
RandomStringUtils.random(n,"abcdefghijk");
//指定从字符或数字中生成随机字符串
System.out.println(RandomStringUtils.random(n,true,false));
System.out.println(RandomStringUtils.random(n,false,true));
NumberUtils:
//从数组中选出最大值
NumberUtils.max(newint[]{1,2,3,4});//---4
//判断字符串是否全是整数
NumberUtils.isDigits("153.4");//--false
//判断字符串是否是有效数字
NumberUtils.isNumber("0321.1");//---false
ArrayUtils:
//创建数组
String[]array=ArrayUtils.toArray("1","2");
//判断两个数据是否相等,如果内容相同,顺序相同则返回true
ArrayUtils.isEquals(arr1,arr2);
//判断数组中是否包含某一对象
ArrayUtils.contains(arr,"33");
//二维数组转换成MAP
Mapmap=ArrayUtils.toMap(newString[][]{
{"RED","#FF0000"},{"GREEN","#00FF00"},{"BLUE","#0000FF"}});
DateUtils:
//日期加n天
DateUtils.addDays(newDate(),n);
//判断是否同一天
DateUtils.isSameDay(date1,date2);
//字符串时间转换为Date
DateUtils.parseDate(str,parsePatterns);
四、结语
本文只是简单的介绍了commons-lang中的一些常用工具类,还有许多挺实用的就不一一列举。还是要自己去查阅文档试用了才能体会到它的简便。
二、为什么Java工具类方法为静态类
静态方法没有对象,也就没有对象的数据,无法用于多个实例,或是数组之类的场合。
而非静态方法,必须建立实例后才可以使用,在很多场合会非常繁琐。
你可以理解为,非静态方法用于对象。静态方法用于工具类。
再有一个理解,这两者的区别是,非静态方法隐式的将当前对象作为参数传递了进去。
如果全部都是静态方法,那么代码其实就类似C或者BASIC了,不是面向对象了。
全部都不是静态方法,其实可以实现,只是代码量会增加很多。
三、java ftp 有哪些工具类
可以直接使用iis7服务器管理工具
作为ftp的客户端,除了实现文件上传下载。它可以批量管理ftp站点,并可以定时备份文件传输的功能。
它是一款服务器批量管理工具,可以集中管理windows及linux系统服务器,以及作为ftp及vnc的客户端使用,作为中文管理系统,更符合咱们国人的使用习惯,最关键的,它是免费的!
四、你常用的Java工具库都有哪些
JavaSDK肯定是使用最广的库,所以本文的名单焦点是流行的第三方库。该列表可能并不完善,所以如果你觉得有什么应该出现在列表中的,请留下您的评论。非常感谢!
1、核心库
Apache Commons Lang:来自Apache的核心库,为java.lang API补充了许多常用的工具类,如字符串操作、对象的创建等。
Google Guava:来自谷歌的核心库,包括**(Collection)、缓存(Caching)、支持原语(Primitives)等。(示例)
2、HTML、XML Parser
Jsoup:一个简化了的 HTML操作的库。(示例)
STaX:一组可以高效处理XML的API。(示例)
3、Web框架
Spring:Java平台上众所周知的开源框架和依赖注入容器。(示例)
Struts2:来自Apache的流行Web框架。(示例)
GoogleWebToolkit:Google提供的开发工具库,主要用于构建和优化复杂的Web程序用。(示例)
Strips:使用最新Java技术构建的Web程序框架,推荐使用。
Tapestry:面向组件的框架,用于使用Java创建动态、健壮、扩展性高的Web应用程序。
请猛击这里查看以上面框架之间的比较。
4、图表、报表、图像
JFreeChart:用于创建如条形图、折线图、饼图等图表。
JFreeReport:创建于输出PDF格式的报表。
JGraphT:创建图像,其中只包含由线段连接的点集。
5、窗口
Swing:SDK提供的GUI库。(示例)
SWT:eclipse提供的GUI库。
SWT与Swing的比较。
6.、GUI框架
EclipseRCP。(示例)
7、自然语言处理
OpenNLP:来自Apache的自然语言处理库。(示例)
StanfordParser:斯坦福大学提供的自然语言处理库。(示例)
如果你是一名NLP专家,请猛击这里查看更多工具库介绍。
8、静态分析
EclipseJDT:由IBM提供的静态分析库,可以操作Java源代码。(示例)
WALA:可以处理jar包文件(即字节码)的工具库。(示例)
9、JSON
Jackson:用于处理JSON数据格式的多用途的Java库。Jackson旨在快速、准确、轻量、对开人员友好之间找到最好的平衡点。
XStream:一个简单用于对象和XML互相转换的库。
GoogleGson:一个专门用于Java对象和Json对象相互转换的工具库。(示例)
JSON-lib:用于beans、maps、collections、javaarrays、XML和JSON之间相互转换操作的工具库。
10、数学
ApacheCommonsMath:提供数学计算和数值统计需函数的工具库。
11、日志
ApacheLog4j:风行一时的日志记录操作库。(示例)
Logback:当前流行的log4j项目的继任者。
SLF4J(TheSimpleLoggingFacadeforJava):各种日志框架的一个简单的外观或抽象(如java.util.logging、logback、log4j等),允许用户在部署时加入需要的日志框架。
12、Office
ApachePOI:利用其提供的APIs,可以使用纯Java代码操作各种基于微软OLE2合成文档格式的文档。
Docx4j:一个用于创建、操作微软公开的XML文件的库(支持Worddocx、 Powerpointpptx和Excelxlsx)。
13、日期和时间
Joda-Time:如有质量问题包退包换的Java日期和时间类。
14、数据库
Hibernate、EclipseLink、JPA
JDO
jOOQ
SpringJDBC、SpringData
ApacheDbUtils
15、开发工具
Lambok:旨在减少代码编写的Java开发库。
感谢您的阅读!希望本文对解决您关于JAVA之常用的工具类的问题有所帮助。如果您还有其他疑问,欢迎随时向我们提问。