4、

该方法用于获取URL链接中的path部分字符串,比如:

 @Test
//获得path部分
public void getPathTest {
String url = "http://localhost/search?name=abc&age=20";
String pathStr = URLUtil.getPath(url);
System.out.println(pathStr);
}

运行结果:

/search

在我们的日常使用中,有些方法是针对通用的,这些方法不区分何种对象,针对这些方法,封装为。

1、equal

该方法用于比较两个对象是否相等,相等的条件有两个:

obj1 == && obj2 ==

obj1.equal(obj2)

这两个条件满足其中一个就表示这两个对象相等,代码如下:

 @Test
//比较两个对象是否相等。
//相同的条件有两个,满足其一即可:
//obj1 == && obj2 == obj1.equals(obj2)
public void equalTest {
Object obj = ;
Object obj2 = ;
boolean equal = ObjectUtil.equal(obj, obj2);
System.out.println(equal);
}

运行结果:

true

2、

该方法用于计算传入对象的长度,如果传入的是字符串,则计算字符串长度;如果传入的是集合,则计算集合大小;方法会自动调用对应类型的长度计算方法。

 @Test
//计算对象长度,如果是字符串调用其length函数,集合类调用其size函数,数组调用其length属性,其他可遍历对象遍历计算长度
//支持的类型包括:CharSequence Map Iterator Enumeration Array
public void lengthTest {
String str = "hello world";
List list = Arrays.asList(1, 2, 3, 4, 5, 6);
System.out.println(ObjectUtil.length(str));
System.out.println(ObjectUtil.length(list));
}

运行结果:

11
6

3、

该方法用于判断给定的对象中是否还有指定的元素,代码如下:

 @Test
//对象中是否包含元素
//支持的对象类型包括:String Collection Map Iterator Enumeration Array
public void containsTest {
List list = Arrays.asList(1, 2, 3, 4, 5, 6);
boolean flag = ObjectUtil.contains(list, 1);
System.out.println(flag);
}

运行结果:

true

4、

该方法用于判断给定的对象是否为基本类型,包括包装类型和非包装类型 ,代码如下:

 @Test
//是否为基本类型,包括包装类型和非包装类型
public void isBasicTypeTest{
String str = "hello";
int num = 100;
boolean flag = ObjectUtil.isBasicType(str);
boolean flag2 = ObjectUtil.isBasicType(num);
System.out.println(flag);
System.out.println(flag2);
}

运行结果:

false
true

反射机制是Java的核心,Java框架的实现就使用到了大量的反射,针对Java反射做了一些封装。

1、

该方法用于获取一个类中所有的方法,包括其父类中的方法。

 @Test
//获得一个类中所有方法列表,包括其父类中的方法
public void getMethodsTest {
Method methods = ReflectUtil.getMethods(Object.class);
for (Method method : methods) {
System.out.println(method.getName);
}
}

运行结果:

finalize
wait
wait
wait
equals
toString
hashCode
getClass
clone
notify
notifyAll
registerNatives

2、

该方法用于获取某个类的指定方法,代码如下:

 @Test
//获取某个类的指定方法
public void getMethodsTest {
Method method = ReflectUtil.getMethod(Object.class, "getClass");
System.out.println(method);
}

运行结果:

public final native java.lang.Class java.lang.Object.getClass

3、

该方法通过类的Class类型实例化对象,代码如下:

 @Test
//实例化对象
public void newInstanceTest {
Object obj = ReflectUtil.newInstance(Object.class);
boolean flag = ObjectUtil.is(obj);
System.out.println(flag);
}

运行结果:

false

4、

该方法用于执行对象中的方法,代码如下:

 @Test
//执行方法
public void invokeTest {
ArrayList list = ReflectUtil.newInstance(ArrayList.class);
ReflectUtil.invoke(list,"add",1);
System.out.println(list);
}

运行结果:

[1]

其中第二个参数是要执行的方法名,第三个参数是要执行的方法参数。

这是一个剪切板的工具类,用于简化对剪切板的操作,某些场景下可能会使用到。

1、

该方法用于获取剪切板的内容,比如你用鼠标选取了一段内容进行复制,该方法就可以获取到复制的内容,代码如下:

 @Test
//从剪切板获取文本内容
public void getStrTest {
String str = ClipboardUtil.getStr;
System.out.println(str);
}

运行结果:

String str = ClipboardUtil.getStr;

2、

该方法用于设置剪切板的内容,即:将指定的字符串设置到剪切板上,相当于你复制了该内容,代码如下:

 @Test
//设置剪切板文本内容
public void setStrTest {
String str = ClipboardUtil.getStr;
System.out.println(str);
ClipboardUtil.setStr("hello world");
String str2 = ClipboardUtil.getStr;
System.out.println(str2);
}

运行结果:

String str = ClipboardUtil.getStr;
hello world

还有获取图片、设置图片等等方法,大家可以自行体验。

该类主要是封装了一些反射的方法,使得调用更加方便。

1、

该方法用于获取类名的短格式,代码如下:

 @Test
//获取类名的短格式
public void getShortClassNameTest{
String shortClassName = ClassUtil.getShortClassName("com.wwj.hutool.test.ObjectUtilTest");
System.out.println(shortClassName);
}

运行结果:

c.w.h.t.ObjectUtilTest

2、

获取指定类的包名,代码如下:

 @Test
//获取指定类的包名
public void getPackageTest{
String packageName = ClassUtil.getPackage(ObjectUtilTest.class);
System.out.println(packageName);
}

运行结果:

com.wwj.hutool.test

3、

这个方法是该工具类的核心,这是一个扫描包下资源的方法,在中用于依赖注入,代码如下:

 @Test
//扫描包下资源
public void scanPackageTest{
Set<Class> classes = ClassUtil.scanPackage("com.wwj.hutool.test");
for (Class aclass : classes) {
System.out.println(aclass.getName);
}
}

运行结果:

com.wwj.hutool.test.URLUtilTest
com.wwj.hutool.test.StrUtilTest
com.wwj.hutool.test.ObjectUtilTest

该方法需要传递一个包名作为参数,然后便会在指定的包下扫描所有的类,你还可以通过传入对象来过滤掉指定的类。

4、

该方法用于获取Java的系统变量定义的。

 @Test
public void scanPackageTest{
String javaClassPaths = ClassUtil.getJavaClassPaths;
for (String javaClassPath : javaClassPaths) {
System.out.println(javaClassPath);
}
}

运行结果:

F:ToolIntelliJ IDEA 2018.3libidea_rt.jar
F:ToolIntelliJ IDEA 2018.3pluginsjunitlibjunit-rt.jar
F:ToolIntelliJ IDEA 2018.3pluginsjunitlibjunit5-rt.jar
E:Javajdk1.8.0_181jrelibcharsets.jar
E:Javajdk1.8.0_181jrelibdeploy.jar
......

该工具类用于执行命令行命令,在下是cmd,在Linux下是shell。

因为很简单,这里就直接贴出代码即可:

 @Test
public void RunTimeUtilTest{
String str = RuntimeUtil.execForStr("ipconfig");
System.out.println(str);
}

运行结果:

Windows IP 配置


以太网适配器 以太网:

媒体状态 . . . . . . . . . . . . : 媒体已断开连接
连接特定的 DNS 后缀 . . . . . . . :

无线局域网适配器 本地连接* 1:

媒体状态 . . . . . . . . . . . . : 媒体已断开连接
连接特定的 DNS 后缀 . . . . . . . :

无线局域网适配器 本地连接* 2:

媒体状态 . . . . . . . . . . . . : 媒体已断开连接
连接特定的 DNS 后缀 . . . . . . . :

无线局域网适配器 WLAN:

连接特定的 DNS 后缀 . . . . . . . : www.tendawifi.com
本地链接 IPv6 地址. . . . . . . . : fe80::830:2d92:1427:a434
IPv4 地址 . . . . . . . . . . . . : 192.168.0.103
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . : 192.168.0.1

这是针对数学运算的工具类,在传统的Java开发中,经常会遇到小数之间的计算,而小数很容易丢失精度,为了精确,通常会使用到类,但它们之间的转换实在复杂。为此,提供了类,使用该类进行数学计算将会非常轻松。

1、加减乘除

 @Test
public void calcTest{
double d = 3.5;
float f = 0.5f;
System.out.println(NumberUtil.add(d,f));//加
System.out.println(NumberUtil.sub(d,f));//减
System.out.println(NumberUtil.mul(d,f));//乘
System.out.println(NumberUtil.div(d,f));//除
}

运行结果:

4.0
3.0
1.75
7.0

2、保留小数

 @Test
public void calcTest{
double d = 1234.56789;
System.out.println(NumberUtil.round(d,2));
System.out.println(NumberUtil.roundStr(d,3));
}

运行结果:

1234.57
1234.568

通过round和方法均可实现保留小数,默认使用四舍五入的模式,当然你也可以传入相应的模式改变程序。

3、数字判断

提供了系列方法用于常见类型的数字判断,因为很简单,就不贴代码了,直接看看方法名和作用即可。

4、其它

当然还有一些比较常见的数学运算,也进行了相应的封装。

该工具类主要用于生成唯一ID。

1、生成UUID

 @Test
public void IdUtilTest{
String uuid = IdUtil.randomUUID;
String simpleUUID = IdUtil.simpleUUID;
System.out.println(uuid);
System.out.println(simpleUUID);
}

运行结果:

b1e4e753-39b9-4026-8a08-ce9837e15f62
23f1603604694d029bb35c1c03d7aeb1

方法生成的是带’-‘的UUID,而方法生成的是不带’-‘的UUID。

2、

是数据库的一种唯一ID生成策略,是UUID 的变种 。

针对此封装了cn..core.lang.,快捷创建方法为:

//生成类似:5b9e306a4df4f8c54a39fb0c
String id = ObjectId.next;

//方法2:从Hutool-4.1.14开始提供
String id2 = IdUtil.objectId;

3、

分布式系统中,有一些需要使用全局唯一ID的场景,有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。的 算法就是这种生成器。

缺点是:强依赖于机器时间,如果机器时间回滚,则可能会导致id重复。

使用方法如下:

// 参数1为终端ID,参数2为数据中心ID

// 参数1、2的取值范围为[0,32),整数int

Snowflake snowflake = IdUtil.getSnowflake(1, 1);
long id = snowflake.nextId;

注:

也可以使用 .(1, 1) 来生成 。如果与 for 循环联用,则需要注意写法,否则会产生重复 id。

不过还是建议使用 .(1, 1) ,方便无重复。

在Java中,对文件、文件夹打包,压缩是一件比较繁琐的事情,我们常常引入Zip4j进行此类操作。但是很多时候,JDK中的zip包就可满足我们大部分需求。就是针对java.util.zip做工具化封装,使压缩解压操作可以一个方法搞定,并且自动处理文件和目录的问题,不再需要用户判断,压缩后的文件也会自动创建文件,自动创建父目录,大大简化的压缩解压的复杂度。

1、Zip

 @Test
public void zipUtilTest{
ZipUtil.zip("C:/Users/Administrator/Desktop/test.txt");
}

观察桌面:

压缩成功。

当然了,你也可以指定压缩后的压缩包存放位置,将路径作为第二个参数传入zip方法即可。

多文件或目录压缩。可以选择多个文件或目录一起打成zip包 :

 @Test
public void zipUtilTest {
ZipUtil.zip(FileUtil.file("d:/bbb/ccc.zip"), false,
FileUtil.file("d:/test1/file1.txt"),
FileUtil.file("d:/test1/file2.txt"),
FileUtil.file("d:/test2/file1.txt"),
FileUtil.file("d:/test2/file2.txt")
);

}

解压操作和压缩一样,不重复讲解,解压方法为unzip。

2、GZip

Gzip是网页传输中广泛使用的压缩方式,同样提供其工具方法简化其过程。

.gzip压缩,可压缩字符串,也可压缩文件.解压Gzip文件

3、Zlib

.zlib压缩,可压缩字符串,也可压缩文件.解压zlib文件

在日常开发中,我们对身份证的验证主要是正则方式(位数,数字范围等),但是中国身份证,尤其18位身份证每一位都有严格规定,并且最后一位为校验位。而我们在实际应用中,针对身份证的验证理应严格至此。于是应运而生。

现在支持大陆15位、18位身份证,港澳台10位身份证。

工具中主要的方法包括:

验证身份证是否合法

身份证15位转18位

获取生日

获取年龄

获取生日年

获取生日月

获取生日天

获取性别

获取省份

使用

String ID_18 = "321083197812162119";
String ID_15 = "150102880730303";

//是否有效
boolean valid = IdcardUtil.isValidCard(ID_18);
boolean valid15 = IdcardUtil.isValidCard(ID_15);

//转换
String convert15To18 = IdcardUtil.convert15To18(ID_15);
Assert.assertEquals(convert15To18, "150102198807303035");

//年龄
DateTime date = DateUtil.parse("2017-04-10");

int age = IdcardUtil.getAgeByIdCard(ID_18, date);
Assert.assertEquals(age, 38);

int age2 = IdcardUtil.getAgeByIdCard(ID_15, date);
Assert.assertEquals(age2, 28);

//生日
String birth = IdcardUtil.getBirthByIdCard(ID_18);
Assert.assertEquals(birth, "19781216");

String birth2 = IdcardUtil.getBirthByIdCard(ID_15);
Assert.assertEquals(birth2, "19880730");

//省份
String province = IdcardUtil.getProvinceByIdCard(ID_18);
Assert.assertEquals(province, "江苏");

String province2 = IdcardUtil.getProvinceByIdCard(ID_15);
Assert.assertEquals(province2, "内蒙古");

最后

本篇文章也只是例举了中的部分工具类,实际上,是一个非常完美的项目,实现了很多Java操作,使得我们在操作一些比较复杂的内容时也能轻松应对。

———END———
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,永久会员只需109元,全站资源免费下载 点击查看详情
站 长 微 信: nanadh666

声明:1、本内容转载于网络,版权归原作者所有!2、本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。3、本内容若侵犯到你的版权利益,请联系我们,会尽快给予删除处理!