欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

超好用的Java工具類庫(kù)Hutool用法詳解

 更新時(shí)間:2023年09月07日 15:03:42   作者:雨點(diǎn)的名字  
Hutool是一個(gè)小而全的Java工具類庫(kù),通過靜態(tài)方法封裝,降低相關(guān)API的學(xué)習(xí)成本,提高工作效率,下面就跟隨小編一起來學(xué)習(xí)一下Hutool的具體用法吧

一、簡(jiǎn)介

Hutool是一個(gè)小而全的Java工具類庫(kù),通過靜態(tài)方法封裝,降低相關(guān)API的學(xué)習(xí)成本,提高工作效率,使Java擁有函數(shù)式語(yǔ)言般的優(yōu)雅,讓Java語(yǔ)言也可以“甜甜的”。

Hutool的目標(biāo)是使用一個(gè)工具方法代替一段復(fù)雜代碼,從而最大限度的避免“復(fù)制粘貼”代碼的問題,徹底改變我們寫代碼的方式。

以計(jì)算MD5為例:

-【以前】打開搜索引擎 -> 搜“Java MD5加密” -> 打開某篇博客-> 復(fù)制粘貼 -> 改改好用

-【現(xiàn)在】引入Hutool -> SecureUtil.md5()

Hutool的存在就是為了減少代碼搜索成本,避免網(wǎng)絡(luò)上參差不齊的代碼出現(xiàn)導(dǎo)致的bug。

二、包含組件

一個(gè)Java基礎(chǔ)工具類,對(duì)文件、流、加密解密、轉(zhuǎn)碼、正則、線程、XML等JDK方法進(jìn)行封裝,組成各種Util工具類,同時(shí)提供以下組件:

你可以通過引入hutool-all方式引入所有模塊,但還是不建議引入所有模塊,因?yàn)榻^大部分功能項(xiàng)目可能都用不上,建議只引入你需要的模塊。

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

另外個(gè)人覺得Hutool雖然工具很全,但是有些事情還是交給專業(yè)的框架來做,比如http請(qǐng)求,就建議用okhttp或者h(yuǎn)ttpclient,導(dǎo)入導(dǎo)出用easyexcel。

下面介紹一些常用的工具類

三、常用功能演示

Hutool 提供的功能實(shí)在太多,這里只列舉一些我個(gè)人覺得比較實(shí)用的功能,供大家學(xué)習(xí)參考。

1、類型轉(zhuǎn)換工具Convert類

只要你需要用到類型轉(zhuǎn)換的,你都先別急著自己造輪子,可以先來這里找找。

   public static void main(String[] args) {
        //1、Object 轉(zhuǎn) 數(shù)字
        Object s = "123";
        Integer bInt = Convert.toInt(s);
        //如果給定的值為空,或者轉(zhuǎn)換失敗,返回默認(rèn)值
        Integer baInt = Convert.toInt("123a", 0);
        //2、數(shù)字轉(zhuǎn)字符串
        String aStr = Convert.toStr(1);
        //3、轉(zhuǎn) BigDecimal
        BigDecimal sbDecimal = Convert.toBigDecimal("123");
        //4、金額轉(zhuǎn)為中文形式
        String chinese = Convert.digitToChinese(12);
    }

還有很多很多,只要你想到的這里基本上都有。

2、時(shí)間工具DateUtil

  public static void main(String[] args) {
        //1、當(dāng)前時(shí)間
        Date date = DateUtil.date();
        Date date2 = DateUtil.date(System.currentTimeMillis());
        //2、當(dāng)前時(shí)間字符串,格式:yyyy-MM-dd HH:mm:ss
        String now = DateUtil.now();
         //當(dāng)前日期字符串,格式:yyyy-MM-dd
        String today = DateUtil.today();
        //3、獲得月份,從0開始計(jì)數(shù)
        int month = DateUtil.month(new Date());
        //4、格式化后的字符串 默認(rèn)yyyy-MM-dd HH:mm:ss
        String dateTime = DateUtil.formatLocalDateTime(LocalDateTime.now());
        //格式化后的字符串 指定格式類型。所以類型在DatePattern工具類也可以找 不用在手寫
        String format = DateUtil.format(new Date(), DatePattern.CHINESE_DATE_PATTERN);
        //5、獲取某月的開始時(shí)間
        DateTime dateTime1 = DateUtil.beginOfMonth(new Date());
        //獲取昨天時(shí)間
        DateTime yesterday = DateUtil.yesterday();
        //6、計(jì)時(shí),常用于記錄某段代碼的執(zhí)行時(shí)間,單位:毫秒
        long spendMs = DateUtil.spendMs(111111111L);
    }

3、數(shù)字類工具NumberUtil

這個(gè)數(shù)字工具在實(shí)際開發(fā)中還是蠻有用的,一般我們進(jìn)行數(shù)字加減的時(shí)候,很容易因?yàn)閿?shù)據(jù)為null,而報(bào)空指針異常。

這個(gè)工具類很好的幫我們避免這類問題的發(fā)生。

如下示例:

  public static void main(String[] args) {
        //1、數(shù)字相加 如果為空默認(rèn)加0
        BigDecimal decimal = BigDecimal.valueOf(10);
        //返回10
        BigDecimal add = NumberUtil.add(decimal, null);
    }

看下這個(gè)工具類的常用方法

    //1、相加,9 + null = 9
    BigDecimal add(BigDecimal... values);
    BigDecimal add(String... values);
    //2、相減
    BigDecimal sub(BigDecimal... values);
    BigDecimal sub(String... values);
    //3、相乘
    BigDecimal mul(BigDecimal... values);
    BigDecimal mul(String... values);
    //4、相除,當(dāng)發(fā)生除不盡的情況時(shí),由scale指定精確度,后面的四舍五入
    BigDecimal div(Number v1, Number v2, int scale);
    BigDecimal div(String v1, String v2, int scale);
    //5、保留固定位數(shù)小數(shù)
    BigDecimal round(BigDecimal number, int scale);
    String roundStr(String numberStr, int scale);
    //6、格式化百分比: 0.23 -> 23%
    String formatPercent(double number, int scale);
    //7、字符串是否為數(shù)字
    boolean isNumber(CharSequence str);
    //8、判斷String是否是整數(shù)
    boolean isInteger(String s);
    //9、生成不重復(fù)隨機(jī)數(shù) 根據(jù)給定的最小數(shù)字和最大數(shù)字,以及隨機(jī)數(shù)的個(gè)數(shù)
    int[] generateRandomNumber(int begin, int end, int size);
    //10、比較大小,參數(shù)1 > 參數(shù)2 返回true
    boolean isGreater(BigDecimal bigNum1, BigDecimal bigNum2);
    //11、取最大值
    BigDecimal max(BigDecimal... numberArray);
    //12、字符串轉(zhuǎn)數(shù)字
    BigDecimal toBigDecimal(String numberStr);
    //13、空轉(zhuǎn)0
    BigDecimal null2Zero(BigDecimal decimal);

4、身份認(rèn)證工具IdcardUtil

public static void main(String[] args) {
        String ID_18 = "119127189008245110";
        //是否有效
        boolean valid = IdcardUtil.isValidCard(ID_18);
        //年齡
        int age = IdcardUtil.getAgeByIdCard(ID_18);
        //生日
        String birth = IdcardUtil.getBirthByIdCard(ID_18);
        //省份
        String province = IdcardUtil.getProvinceByIdCard(ID_18);
    }

5、信息脫敏工具DesensitizedUtil

public static void main(String[] args) {
    //【中文姓名】只顯示第一個(gè)漢字,其他隱藏為2個(gè)星號(hào),比如:李**
    DesensitizedUtil.chineseName("張三");
    //【身份證號(hào)】前1位 和后2位
    DesensitizedUtil.idCardNum("33012345",1,2);
    //【手機(jī)號(hào)碼】前三位,后4位,其他隱藏,比如135****2210
    DesensitizedUtil.mobilePhone("13712345678");
    //【地址】只顯示到地區(qū),不顯示詳細(xì)地址,比如:北京市海淀區(qū)****
    DesensitizedUtil.address("北京市海淀區(qū)被順街道",4);
    //還有 郵箱、車牌、郵箱、銀行卡、密碼......
}

6、字段校驗(yàn)工具Validator

  public static void main(String[] args) {
        //1、判斷字符串是否全部為字母組成,包括大寫和小寫字母和漢字
        Validator.isLetter("小小寶貝");
        //2、驗(yàn)證該字符串是否是數(shù)字
        Validator.isNumber("123");
        //3、驗(yàn)證是否為可用郵箱地址
        Validator.isEmail("123456@mall.com");
        //4、驗(yàn)證是否為手機(jī)號(hào)碼(中國(guó))
        Validator.isMobile("15612345678");
        //5、驗(yàn)證是否為身份證號(hào)碼(支持18位、15位和港澳臺(tái)的10位)
        Validator.isCitizenId("330127210006111234");
        //6、驗(yàn)證是否為中國(guó)車牌號(hào)
        Validator.isPlateNumber("小A.88888");
        //7、驗(yàn)證是否都為漢字
        Validator.isChinese("小A");
        //8、檢查給定的數(shù)字是否在指定范圍內(nèi)
        Validator.isBetween(3,2,1);
    }

7、集合工具類CollStreamUtil

用java8的Stream流能夠非常簡(jiǎn)化我們的代碼,這個(gè)工具類相當(dāng)于對(duì)java8的Stream的寫法進(jìn)一步簡(jiǎn)寫。

   public static void main(String[] args) {
        List<Student> list = new ArrayList<>();
        list.add(new Student(1, 1, 1, "張三"));
        list.add(new Student(1, 1, 2, "李四"));
        list.add(new Student(1, 1, 3, "王五"));
        //1、學(xué)生id -> 學(xué)生對(duì)象
        Map<Long, Student> map = CollStreamUtil.toIdentityMap(list, Student::getStudentId);
        //2、學(xué)生id -> 學(xué)生名稱
        Map<Long, String> map1 = CollStreamUtil.toMap(list, Student::getStudentId, Student::getName);
        //3、學(xué)生id -> 學(xué)生集合
        Map<Long, List<Student>> map2 = CollStreamUtil.groupByKey(list, Student::getClassId);
        //4、獲取用戶名集合
        List<String> list1 = CollStreamUtil.toList(null, Student::getName);
    }

當(dāng)然上面只是展示了一小部分工具,具體的可以看官方文檔,寫的清清楚楚,明明白白哇

官方文檔: https://www.hutool.cn/docs/#/

到此這篇關(guān)于超好用的Java工具類庫(kù)Hutool用法詳解的文章就介紹到這了,更多相關(guān)Java Hutool內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mybatis-plus 使用Condition拼接Sql語(yǔ)句各方法的用法

    mybatis-plus 使用Condition拼接Sql語(yǔ)句各方法的用法

    這篇文章主要介紹了mybatis-plus 使用Condition拼接Sql語(yǔ)句各方法的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 解析JavaSe的內(nèi)部類

    解析JavaSe的內(nèi)部類

    這篇文章主要為大家詳細(xì)介紹了JavaSe的內(nèi)部類,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • springcloud-gateway集成knife4j的示例詳解

    springcloud-gateway集成knife4j的示例詳解

    這篇文章主要介紹了springcloud-gateway集成knife4j的示例詳解,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • springmvc json類型轉(zhuǎn)換錯(cuò)誤解決方案

    springmvc json類型轉(zhuǎn)換錯(cuò)誤解決方案

    這篇文章主要介紹了springmvc json類型轉(zhuǎn)換錯(cuò)誤解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • java針對(duì)電話號(hào)碼正則匹配實(shí)例

    java針對(duì)電話號(hào)碼正則匹配實(shí)例

    這篇文章主要介紹了java針對(duì)電話號(hào)碼正則匹配的方法,涉及java正則匹配與字符串操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • JavaIO模型中的BIO,NIO和AIO詳解

    JavaIO模型中的BIO,NIO和AIO詳解

    這篇文章主要為大家詳細(xì)介紹了JavaIO模型中的BIO,NIO和AIO,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • Java?Optional的判空操作詳解

    Java?Optional的判空操作詳解

    JAVA在1.8版本推出Optional,官方文檔將其描述為可能包含或不包含非空值的容器對(duì)象,目前Optional用于避免程序出現(xiàn)異常NullPointerException,感興趣的可以了解一下
    2022-09-09
  • JetBrains IntelliJ IDEA 2020安裝與使用教程詳解

    JetBrains IntelliJ IDEA 2020安裝與使用教程詳解

    這篇文章主要介紹了JetBrains IntelliJ IDEA 2020安裝與使用教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Spring Cloud Alibaba Nacos 入門詳解

    Spring Cloud Alibaba Nacos 入門詳解

    這篇文章主要介紹了Spring Cloud Alibaba Nacos入門詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-03-03
  • Java 如何從list中刪除符合條件的數(shù)據(jù)

    Java 如何從list中刪除符合條件的數(shù)據(jù)

    這篇文章主要介紹了Java 如何從list中刪除符合條件的數(shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11

最新評(píng)論