×

JAVA之常用的工具类

前端技术网 前端技术网 发表于2024-01-21 00:46:27 浏览604 评论0

抢沙发发表评论

一、commons.lang中有哪些常用的工具

一、前言

Java码农不识Apache,敲尽一生也枉然。旗下的开源项目众多,各个都是吊炸天。今日且说Commons,轻轻点击此链接进入Apache Commons主页,Logging、Pool、Net、ONGL、EL、IO、DBCP、Email、Collection、Lang……等等项目中常用到的包。而这篇文章的主角Lang则是我们最常用的工具作为jdk的补充,怎能不去详细探究一番!

JAVA之常用的工具类

二、字符串的处理类(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..."

JAVA之常用的工具类

//字符串结尾的后缀是否与你要结尾的后缀匹配,若不匹配则添加后缀

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之常用的工具类的问题有所帮助。如果您还有其他疑问,欢迎随时向我们提问。