hutool介绍:
官网文档:https://hutool.cn/docs/#/
Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。
一、pom.xml中引入hutool依赖
cn.hutool
hutool-all
5.1.0
org.projectlombok
lombok
1.18.6
provided
二、使用示例(常用)
1、Assert断言
public class AssertTest {
@Test
public void test1(){
String a="abc"+"def";
//断言为表达式的结果为真
Assert.isTrue(a.equals("abcdef"));
String b="11";
Assert.notNull(b);//断言对象不为null
String c=null;
Assert.isNull(c);//断言对象为null
int d=8;
Assert.checkBetween(d,1,10);//断言区间范围
}
}
2、 字符串工具
public class StrTest {
@Test
public void test1(){
String s="a b c ";
Assert.isTrue(StrUtil.isNotEmpty(s));//不为empty
Assert.isTrue(StrUtil.isNotBlank(s));//不为blank
Assert.isTrue(StrUtil.cleanBlank(s).equals("abc"));//清除空白字符
//字符串模板
String s2= StrUtil.format("你好:{},欢迎来到{}的世界","小明","java");
Assert.isTrue(s2.equals("你好:小明,欢迎来到java的世界"));
//字符串模板 map存放变量值
Map map=new HashMap<>();
map.put("name","小明");
map.put("language","java");
String s3= StrUtil.format("你好:{name},欢迎来到{language}的世界",map);
Assert.isTrue(s3.equals("你好:小明,欢迎来到java的世界"));
}
}
3、集合工具
public class CollTest {
@Test
public void test1(){
List list=new ArrayList();
list.add("aa");
list.add("bb");
list.add("cc");
//集合list是否为非空
Assert.isTrue(CollUtil.isNotEmpty(list));
}
}
4、日期工具
public class DateTest {
@Test
public void test1() {
//返回标准的yyyy-MM-dd HH:mm:ss格式的日期字符串
String now = DateUtil.now();
System.out.println(now);
Date date = new Date();
//日期对象格式化输出
String s = DateUtil.format(date, "yyyy-MM-dd");
System.out.println(s);
//将日期字符串解析为日期对象
Date d2= DateUtil.parse("2020-01-17","yyyy-MM-dd");
System.out.println(d2);
}
}
5、Object对象相关工具
public class ObjectTest {
@Test
public void test1(){
//对象的序列化和反序列化
Student st=new Student("张三",18,"北京");
//对象序列化为字节
byte[] bytes= ObjectUtil.serialize(st);
//将字节数据写入文件
FileUtil.writeBytes(bytes,new File("d:/st.obj"));
//从文件中读取字节数据
byte[] bs=FileUtil.readBytes(new File("d:/st.obj"));
//将字节数据放序列化为对象
Student s= ObjectUtil.unserialize(bs);
System.out.println(s);//打印对象
}
@Test
public void test2(){
//对象深克隆 ,使用流
Student s1=new Student("张三",22,"北京");
Student s2= ObjectUtil.cloneByStream(s1);
//改变克隆对象的属性
s2.setAddress("南京");
Assert.isTrue(s1!=s2);//两个对象是不同的
//打印两个对象,发现各自有自己独立的属性数据。
System.out.println(s1);
System.out.println(s2);
}
}
6、Bean工具类
public class BeanTest {
@Test
public void test1(){
Person p=new Person();
p.setName("王大锤");
p.setAge(23);
p.setHobbies(Arrays.asList("篮球","排球","游泳"));
Map m=new HashMap<>();
m.put("chinese",88);
m.put("math",89);
m.put("english",90);
p.setGrades(m);
//类似spring的EL表达式 ,根据path表达式取对象的属性
String s= BeanUtil.getProperty(p,"hobbies[0]");
System.out.println(s);
Integer score= BeanUtil.getProperty(p,"grades['math']");
System.out.println(score);
}
@Test
public void test2(){
Person p=new Person("大锤",23);
//将bean转为map
Map m= BeanUtil.beanToMap(p);
System.out.println(m);
}
@Test
public void test3(){
Person p1=new Person("大锤",23);
Person p2=new Person();
//对象的属性复制,类似于commom.lang3包中的BeanUtil.copyProperties
BeanUtil.copyProperties(p1,p2);
System.out.println(p2);
}
}
7、其他更多工具类,如http相关、加解密相关、文件io相关、 反射/类加载 、邮件等等不一一举例了,请参照官网
https://hutool.cn/ 官网
https://hutool.cn/docs/#/ 官网文档