zoukankan      html  css  js  c++  java
  • java常用工具

    1.Lombok

    1.1坐标

         <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.16.18</version>
                <scope>provided</scope>
            </dependency>

    1.2注解

    以下注解都使用在类上,用法如下:

    注解 说明
    @Getter 生成get方法
    @Setter 生成set方法
    @ToString 生成toString方法
    @Data

    生成get、set、toString、equals等方法

    @NoArgsConstructor 生成无参构造
    @AllArgsConstructor 生成全参构造器

    @Accessors(chain = true)

    set方法是否开启链式调用,为true时开启

    @Slf4j

    注解在类,生成log变量,严格意义来说是常量

    1.3idea配置

    在idea中安装插件,

     

    配置注解生效

    2.Hutool

    官网:https://www.hutool.cn/docs/#/

    2.1坐标

      <dependency>
          <groupId>cn.hutool</groupId>
          <artifactId>hutool-all</artifactId>
          <version>5.3.9</version>
        </dependency>

    2.2Convert类型转换

    1)Integer转String

    Integer a=1;
    String str = Convert.toStr(a);

    2)String日期转Date

     String time1="2020-05-12";
     String time2="2020/06/15 00:20:20";
     Date date = Convert.toDate(time1);
     Date date2 = Convert.toDate(time2);

    字符串日期在转的时候,并没有指定格式,但是可以快速的转换。

    3)数组转集合

     String arr[]={"1","233","张三"};
     List<?> list = Convert.toList(arr);

    2.3DateUitl(日期时间)   

    1)获取当前的时间date,格式:yyyy-MM-dd HH:mm:ss

    Date date = DateUtil.date();
           
    Date date2 = DateUtil.date(Calendar.getInstance());
           
    Date date3 = DateUtil.date(System.currentTimeMillis());

    以上三种方式都可以获取格式化的date时间

    2)获取当前时间的字符串

    //当前时间字符串,格式:yyyy-MM-dd HH:mm:ss
    String now = DateUtil.now();
    //当前日期字符串,格式:yyyy-MM-dd
    String today= DateUtil.today();

     3)日期字符串转日期parse

    String dateStr = "2017-03-01";
    Date date = DateUtil.parse(dateStr);
    String dateStr2 = "2017/03/01 23:20:23";
    Date date2 = DateUtil.parse(dateStr2);
    Date date3 = DateUtil.parse(dateStr2, "yyyy-MM-dd");

    4)格式化日期为字符串format

    Date date = DateUtil.date();
    
    String format = DateUtil.format(date, "yyyy/MM/dd");//结果:2020/07/16
    
    String formatDate = DateUtil.formatDate(date);//结果:2020-07-16
    
    String formatDateTime = DateUtil.formatDateTime(date);//结果:2020-07-16 20:22:54
    
    String formatTime = DateUtil.formatTime(date);//结果:20:22:54

    5)获取date的一部分

    Date date = DateUtil.date();
    //获得年的部分
    int year = DateUtil.year(date);
    //获得月份,从0开始计数
    int month = DateUtil.month(date)+1;

    6)获取某天/某月的开始或结束时间

    String dateStr = "2017-03-01";
    Date date = DateUtil.parse(dateStr);
    
    //一天的开始,结果:2017-03-01 00:00:00
    Date beginOfDay = DateUtil.beginOfDay(date);
    
    //一天的结束,结果:2017-03-01 23:59:59
    Date endOfDay = DateUtil.endOfDay(date);
    
    //一月的开始,结果:2017-03-01 00:00:00
    Date beginOfMonth = DateUtil.beginOfMonth(date);
    
    //一月的结束,结果:2017-03-31 23:59:59
    Date endOfMonth = DateUtil.endOfMonth(date);

    7)时间偏移(向前或向后)

    String dateStr = "2017-03-01 22:33:23";
    Date date = DateUtil.parse(dateStr);
    
    //获取三个小时前的时间,结果:2017-03-01 19:33:23
    Date newDate = DateUtil.offsetHour(date, -3);
    //获取三天后的时间,结果:2017-03-04 22:33:23
    Date newDate2 = DateUtil.offsetDay(date, 3);
    //获取三天前的时间,结果:2017-03-04 22:33:23
    Date newDate3 = DateUtil.offsetDay(date, -3);
    
    //昨天
    Date yesterday = DateUtil.yesterday();
    //明天
    Date tomorrow = DateUtil.tomorrow();
    //上周
    Date Date = DateUtil.lastWeek();
    //下周
    Date Date1 = DateUtil.nextWeek();
    //上个月
    Date Date2 = DateUtil.lastMonth();
    //下个月
    Date Date3 = DateUtil.nextMonth();

    8)日期时间差between

    String dateStr1 = "2017-03-01 22:33:23";
    Date date1 = DateUtil.parse(dateStr1);
    String dateStr2 = "2017-05-01 23:33:23";
    Date date2 = DateUtil.parse(dateStr2);
    String dateStr3 = "2017-03-02 20:23:35";
    Date date3 = DateUtil.parse(dateStr3);
    
    //两个时间段相差的天数
    long betweenDay = DateUtil.between(date1, date2, DateUnit.DAY);
    //两个时间段相差的小时
    long betweenHour = DateUtil.between(date1, date3, DateUnit.HOUR);
    
    //格式化时间差,精确到分
    String s = DateUtil.formatBetween(betweenDay, BetweenFormater.Level.MINUTE);

    9)其他

     //年龄
    int age = DateUtil.ageOfNow("1990-01-30");
    
    //是否闰年
    boolean leapYear = DateUtil.isLeapYear(2017);

    2.4StrUtil(字符串工具)

    1)isBlank、isNotBlank

    isBlank判断字符串是否为NULL或空串(不可见字符也算做空)是则返回true,否则返回false。isNotBlank相反。

    String s=null;
    String s1="";
    
    boolean b3 = StrUtil.isNotBlank(s);//false
    boolean b4 = StrUtil.isBlank(s1);//true

    isEmptyisNotEmpty也是判断字符串是否为空的,分别对应isBlank、isNotBlank,只是它不会去判断不可见字符。

    2)hasBlank、hasEmpty

    hasBlank与isBlank用法相同,不同点是它是来判断字符串序列的,如字符串数组。普通的字符串也是可以判断的。

    String s=null;
    String s1="";
    String add[]={"a","b",""};
    
    boolean b = StrUtil.hasBlank(s);//true
    boolean b1 = StrUtil.hasBlank(s1);//true
    boolean b2 = StrUtil.hasBlank(add);//true

    3)removePrefix、removePrefix

    作用是去掉字符的前缀和后缀。removeSuffixIgnoreCase和removePrefixIgnoreCase是其对应的忽略大小写的方法。

    String f="abc.png";
    //去掉图片名的后缀
    String suffix = StrUtil.removePrefix(f, ".png");

    4)sub

    字符串的截取,优势在于索引越界也不会抛异常,索引也支持负数,索引位置可以自动修正。

    String str = "abcdefghfs";
    String strSub1 = StrUtil.sub(str, 2, 3); // c
    String strSub2 = StrUtil.sub(str, 3, 2); //c,原因是它可以把这个错误的索引修改为2,3
    String strSub3 = StrUtil.sub(str, 2, -3); //cdefg
    String strSub4 = StrUtil.sub(str, 4, -1); //efghf

    5)format

    字符串模板代替字符串拼接

     //定义模板,类似于slf4j
    String template = "{}爱你,就像老鼠爱{}";
    //使用模板,代替字符串拼接
    String str = StrUtil.format(template, "", "大米"); //我爱你,就像老鼠爱大米

    2.5SecureUtil(加密工具)

    1)md5加密

    String aa="123456";
    String s = SecureUtil.md5(aa);

    2)生成不含-的UUID

    String s = SecureUtil.simpleUUID();

    2.6SystemUtil(系统信息)

    //获取系统信息,包含系统版本等
    OsInfo osInfo = SystemUtil.getOsInfo();
    //获取主机网络地址信息,包含主机名和ip
    HostInfo hostInfo = SystemUtil.getHostInfo();

    2.7BeanUtil(类的操作)

    2.7.1把类复制给另一个类

    不能改变一个类的属性但是右必须改变时,就可以使用类的复制,把一个类复制给一个新的类,对新的类进行操作,这样既不会影响原类的属性也达到了效果,代码如下:

    Map map = new HashMap();
    map.put("name", 111);
    Map map2 = new HashMap();
    BeanUtil.copyProperties(map, map2);

    3.fastjson

    json就是一串字符串 只不过元素会使用特定的符号标注。{} 双括号表示对象 ,[] 中括号表示数组,"" 双引号内是属性或值。

    3.1初始化对象

    JSONObject json=new JSONObject();
    json.put("name","李四");
    json.put("age",20);
    System.out.println(json);//{"name":"李四","age":20}

    3.2toJSONString

    把对象转为json字符串。

    1)语法1:把普通对象转为json字符串

    JSON.toJSONString(Object);

    示例:

    Map<String,Object> map=new HashMap<>();
    map.put("name","张三");
    map.put("age",20);
    String s = JSON.toJSONString(map);
    System.out.println(map);//{name=张三, age=20}
    System.out.println(s);//{"name":"张三","age":20}

    可以看到map转成了json类型的字符串,其他的类型也可以直接转换。.

    2)语法2:把json对象转为json字符串

    json.toJSONString()

    示例:

    JSONObject json=new JSONObject();
    json.put("name","李四");
    json.put("age",20);
    String s = json.toJSONString();
    System.out.println(json);//{"name":"李四","age":20}
    System.out.println(s);//{"name":"李四","age":20}

    虽然看起来打印的结果是一样的,但是一个是json字符串,一个是json对象。

    3.3parseObject

    把json字符串转为对象。

    语法:

    JSON.parseObject(jsonStr, Object.class);

    示例:

      String s = " {\"name\":\"张三\",\"age\":20}";
      Map map = JSON.parseObject(s, Map.class);
      System.out.println(map);//{name=张三, age=20}
      System.out.println(s);//{"name":"张三","age":20}

    根据3.1转换的字符串,把其还原到map,结果是正确的。

    3.4toJSON

    把对象转为JSON对象。

    语法:

    JSON.toJSON(Object);

    示例:

    Map<String,Object> map=new HashMap<>();
    map.put("name","张三");
    map.put("age",20);
    JSONObject s =  (JSONObject) JSON.toJSON(map);
    System.out.println(map);//{name=张三, age=20}
    System.out.println(s);//{"name":"张三","age":20}

    3.5getJSONArray

    把json字符串转为json数组。

    语法:

    JSONArray arr = json.getJSONArray(key);

    User实体类:

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public class User {
    
        private String name;
    
        private String phone;
    }

    示例:

            Map<String,Object> map=new HashMap<>();
            ArrayList<User> list=new ArrayList();
            list.add(new User("张三","123456"));
            list.add(new User("李四","456155"));
            list.add(new User("王五","893456"));
            map.put("user",list);
            map.put("time",new Date());
            System.out.println(map);//
           JSONObject json = (JSONObject) JSON.toJSON(map);
            System.out.println(json);
            //把json字符串转为数组
            JSONArray users = json.getJSONArray("user");
            //遍历数组
            for (int i = 0; i < users.size(); i++) {
          
    JSONObject user = users.getJSONObject(i);
          System.out.println(user);
          System.out.println(user.get("name");
        }

        

    就是这么简单,你学废了吗?感觉有用的话,给笔者点个赞吧 !
  • 相关阅读:
    WebFrom与MVC异同
    MVC解决WebFrom的缺点
    转载ORM--EF框架
    转载 HashSet用法 合交并差
    用户管理模块数据库设计
    外键的增删改查练习
    索引:如何让主键不自动创建聚集索引???
    SQL-类型转换函数
    SQL-union
    SQL字符串函数
  • 原文地址:https://www.cnblogs.com/zys2019/p/13323889.html
Copyright © 2011-2022 走看看