亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

大聰明教你學(xué)Java | Hutool - A set of tools that keep Jav

Ververica / 1684人閱讀

摘要:打印字符串我在人民廣場(chǎng)吃著炸雞打印字符串模板我在吃著炸雞人民廣場(chǎng)我在人民廣場(chǎng)吃著炸雞打印數(shù)組日志工具封裝的日志工廠兼容了各大日志框架,使用起來(lái)也非常簡(jiǎn)便。

前言

無(wú)論在開發(fā)什么項(xiàng)目,我們都會(huì)用到N多種工具類,DateUtils、FileUtils、StringUtils等等… 開發(fā)一個(gè)新項(xiàng)目就需要把這些“輪子”復(fù)制一次,雖然只是Ctrl+C/V,但是也麻煩了一些,而且也會(huì)讓我們的Utils包顯得賊臃腫?
那么怎么解決這個(gè)問題呢?稍安勿躁,接下來(lái)就該請(qǐng)我們的主角閃亮登場(chǎng)了(●’?’●) —— Hutool - A set of tools that keep Java sweet

在Hutool官網(wǎng)中有這么一段話:

Hutool是一個(gè)小而全的Java工具類庫(kù),通過靜態(tài)方法封裝,降低相關(guān)API的學(xué)習(xí)成本,提高工作效率,使Java擁有函數(shù)式語(yǔ)言般的優(yōu)雅,讓Java語(yǔ)言也可以“甜甜的”。
Hutool中的工具方法來(lái)自每個(gè)用戶的精雕細(xì)琢,它涵蓋了Java開發(fā)底層代碼中的方方面面,它既是大型項(xiàng)目開發(fā)中解決小問題的利器,也是小型項(xiàng)目中的效率擔(dān)當(dāng)。

引入Hutool

Maven項(xiàng)目引入Hutool是非常簡(jiǎn)單的,直接在項(xiàng)目的pom.xml的dependencies中加入?即可

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

Hutool的設(shè)計(jì)思想是盡量減少重復(fù)的定義,讓項(xiàng)目中的util這個(gè)package盡量少。
以前在開發(fā)的時(shí)候我們總是打開百度搜XXX工具類,在一篇博客中找到自己所需的代碼復(fù)制粘貼,然后修修補(bǔ)補(bǔ)讓它變得更好用;現(xiàn)在有了Hutool,我們只需要直接使用就ok了,是不是很簡(jiǎn)單O(∩_∩)O

下面就介紹一下開發(fā)中經(jīng)常用到的一些工具類~
P.S. 其實(shí)是因?yàn)镠utool中包含的工具太多了,我實(shí)在是寫不下來(lái)(????)

日期工具類

JDK中自帶的Date工具不太好用,Hutool的日期工具類用起來(lái)就方便多了

先來(lái)個(gè)獲取當(dāng)前日期

	public static void main(String[] args) {        Date date = DateUtil.date();        System.out.println("date = " + date);    }


我們會(huì)發(fā)現(xiàn)它直接返回的是yyyy-MM-dd HH:mm:ss格式的日期,我們看一下date()方法的源碼

date()方法返回的其實(shí)是DateTime,它繼承自 Date 對(duì)象,重寫了toString() 方法,返回 yyyy-MM-dd HH:mm:ss 格式的字符串。

咱們?cè)僭囋囎址D(zhuǎn)日期:

parse()方法會(huì)自動(dòng)識(shí)別一些常用的格式,比如說:

  • yyyy-MM-dd HH:mm:ss
  • yyyy-MM-dd
  • HH:mm:ss
  • yyyy-MM-dd HH:mm

最人性化的一點(diǎn)是,它可以識(shí)別中文格式:年月日時(shí)分秒

	public static void main(String[] args) {        String dateStr = "2021年11月22日 10時(shí)32分07秒";        Date date = DateUtil.parse(dateStr);        System.out.println("date = " + date);    }

再來(lái)說說計(jì)算時(shí)間差

	public static void main(String[] args) {        String dateStr1 = "2021-11-22 10:32:07";        Date date1 = DateUtil.parse(dateStr1);        String dateStr2 = "2021-11-22 10:44:34";        Date date2 = DateUtil.parse(dateStr2);        long betweenDay = DateUtil.between(date1, date2, DateUnit.MS);        String formatBetween = DateUtil.formatBetween(betweenDay, BetweenFormatter.Level.SECOND);        System.out.println("formatBetween = " + formatBetween);    }

輸入:formatBetween = 12分27秒

再說一個(gè)有意思的功能,給定一個(gè)日期,可以輸出生肖和星座?
我是1996年9月11日出生的,就用我的出生日期來(lái)測(cè)試一下

	public static void main(String[] args) {		        String zodiac = DateUtil.getZodiac(9, 11);        System.out.println("zodiac = " + zodiac);        String chineseZodiac = DateUtil.getChineseZodiac(1996);        System.out.println("chineseZodiac = " + chineseZodiac);    }


P.S. 這里需要注意一下哦~ DateUtil.getZodiac()方法中月份是從0開始計(jì)算的,月份參數(shù)輸入的9,其實(shí)代表的是10月,所以就需要改成DateUtil.getZodiac(8, 11) 才會(huì)獲取生日為9月11號(hào)的星座~

字符串工具類

Hutool中的字符串工具類StrUtil和Apache Commons Lang包中的StringUtils就比較類似了,這里就說一個(gè)比較有意思的方法

	public static void main(String[] args) {        String template = "我叫{},我在{}市";        String str = StrUtil.format(template, "liziye", "石家莊");                System.out.println("str = " + str);    }


不知道有沒有小伙伴覺得這個(gè)功能有點(diǎn)眼熟~ 是不是短信接口模板挺像的?

類型轉(zhuǎn)換工具類

類型轉(zhuǎn)換在Java開發(fā)中很常見,就比如說從HttpRequest中獲取參數(shù)的時(shí)候,前端頁(yè)面?zhèn)鬟f的是整型,但后端只能先獲取到字符串,然后再調(diào)用 parseXXX() 方法進(jìn)行轉(zhuǎn)換,還要在加上校驗(yàn)、判空,就很繁瑣。

Hutool的Convert類可以簡(jiǎn)化這個(gè)操作,可以將任意可能的類型轉(zhuǎn)換為指定類型。以轉(zhuǎn)換Int型參數(shù)為例,Convert.toInt(Object value, Integer defaultValue)方法有兩個(gè)參數(shù),第一個(gè)參數(shù)就不用說了,傳遞的是待轉(zhuǎn)換參數(shù),第二個(gè)參數(shù)的含義是:在轉(zhuǎn)換失敗時(shí)返回一個(gè)給定的默認(rèn)值。(第二個(gè)參數(shù)可有可無(wú))


我們?cè)賮?lái)模擬一下轉(zhuǎn)換失敗的情況

	public static void main(String[] args) {        String param = "qweqweqeqwe";        int paramIntDefault = Convert.toInt(param, 0);        System.out.println("paramIntDefault = " + paramIntDefault);    }

流操作工具類

IO 操作包括讀和寫,應(yīng)用的場(chǎng)景主要包括網(wǎng)絡(luò)操作和文件操作,原生的 Java類庫(kù)區(qū)分字符流和字節(jié)流,字節(jié)流InputStream和OutputStream就有N多種,用的時(shí)候真是頭疼。

Hutool封裝了流操作工具類IoUtil、文件讀寫操作工具類FileUtil、文件類型判斷工具類FileTypeUtil等等,讓流操作邊得更簡(jiǎn)單更容易。(這里就不作代碼演示了,這演示起來(lái)就多了?原諒我想偷個(gè)懶)

校驗(yàn)工具類

在開發(fā)的時(shí)候避免不了有表單的存在,后端通常需要對(duì)表單提交過來(lái)的數(shù)據(jù)進(jìn)行驗(yàn)證。Hutool封裝的Validator類可以進(jìn)行很多有效的條件驗(yàn)證,比如是不是郵箱、是不是手機(jī)號(hào)碼、是不是中文…

解壓縮工具

在Java中,對(duì)文件、文件夾進(jìn)行壓縮是一件很繁瑣的事情,Hutool封裝的 ZipUtil工具就極大的降低了解壓縮的復(fù)雜度,可以使用一個(gè)方法搞定壓縮和解壓縮,并且自動(dòng)處理文件和目錄的問題。

ZipUtil.zip(String srcPath, String zipPath)
ZipUtil.unzip(String zipFilePath, @Nullable String outFileDir)

控制臺(tái)打印

開發(fā)的過程中經(jīng)常需要使用System.out打印結(jié)果,但是一些復(fù)雜的對(duì)象不支持直接打印,比如說打印數(shù)組的時(shí)候就需要先用toString方法轉(zhuǎn)換為字符串再進(jìn)行打印。
Hutool 封裝的Console類借鑒了JS中的 console.log(),讓打印也變成了一件非常簡(jiǎn)單的事。

	public static void main(String[] args) {        // 打印字符串        Console.log("我在人民廣場(chǎng)吃著炸雞~");        // 打印字符串模板        Console.log("我在{}吃著炸雞","人民廣場(chǎng)");        String [] str = {"我","在","人民廣場(chǎng)","吃著","炸雞"};        // 打印數(shù)組        Console.log(str);    }

日志工具

Hutool封裝的日志工廠LogFactory兼容了各大日志框架,使用起來(lái)也非常簡(jiǎn)便。

/** * @program: HuTool工具類演示 * @description: HuToolTest * @author: 莊霸.liziye * @create: 2021-11-22 10:29 **/public class HuToolTest {    private static final Log log = LogFactory.get();    public static void main(String[] args) {        log.debug("我在人民廣場(chǎng)吃著炸雞");        log.info("我在人民廣場(chǎng)吃著炸雞");    }}


如果不想創(chuàng)建Log對(duì)象的話,也可以使用StaticLog(一個(gè)提供了靜態(tài)方法的日志類)

小結(jié)

Hutool中的類庫(kù)還有很多,尤其是一些對(duì)第三方類庫(kù)的進(jìn)一步封裝,比如郵件工具 MailUtil,二維碼工具 QrCodeUtil,緩存工具CacheUtil ,圖片工具ImgUtil等等,本文就是簡(jiǎn)單的介紹一下Hutool,讓各位小伙伴對(duì)其有一個(gè)初步的了解,如果想深入學(xué)習(xí)Hutool,請(qǐng)移步至 Hutool官網(wǎng) O(∩_∩)O

本人經(jīng)驗(yàn)有限,有些地方可能講的沒有特別到位,如果您在閱讀的時(shí)候想到了什么問題,歡迎在評(píng)論區(qū)留言,我們后續(xù)再一一探討??

如果文章中有錯(cuò)誤,歡迎大家留言指正;若您有更好、更獨(dú)到的理解,歡迎您在留言區(qū)留下您的寶貴想法。

你在被打擊時(shí),記起你的珍貴,抵抗惡意;
你在迷茫時(shí),堅(jiān)信你的珍貴,拋開蜚語(yǔ);
愛你所愛 行你所行 聽從你心 無(wú)問東西

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/124436.html

相關(guān)文章

  • Java實(shí)戰(zhàn)之文章翻譯:Better Java —— 教你如何編寫現(xiàn)代化的Java程式

    摘要:特別是在可能返回空的集合的情況下務(wù)必返回一個(gè)內(nèi)容為空的集合而不是一個(gè)。對(duì)于集合類型,應(yīng)該在任何允許的情況下使用的或者類??蚣芸蚣苁悄悴渴鸫a的一個(gè)很好地方式,其中較好的選擇有與。包含了大量與文件相關(guān)的操作。 原文地址:這里 Java是目前世界上最流行的編程語(yǔ)言之一,但是并不是所有人都樂于使用它。不過Java其實(shí)是一個(gè)還不錯(cuò)的語(yǔ)言,也別是自從Java 8正式發(fā)布之后,所以我決定將我的一些...

    godruoyi 評(píng)論0 收藏0
  • JavaScript Testing

    Testing framework both use describe, it functions Jasmine(Behavior-Driven JavaScript) spyOn(User, save) jasmine.createSpy() the Jasmine framework has almost everything built into it including assertio...

    Eric 評(píng)論0 收藏0
  • Python遺傳算法框架DEAP-Operators and Algorithms

    摘要:打印出個(gè)體檢查它的適應(yīng)度是否有效這個(gè)個(gè)體打印出來(lái)了。這個(gè)適應(yīng)度值是通過設(shè)置值和元祖關(guān)聯(lián)。適應(yīng)度值被刪除了,因?yàn)樗鼈儾辉俸瓦@個(gè)個(gè)體相關(guān)了因?yàn)樽儺惲寺?。如上面所述,這個(gè)變異算子只是變異并且只是變異一個(gè)個(gè)體,它也不對(duì)適應(yīng)度的無(wú)效負(fù)責(zé)或者其它。 Before starting with complex algorithms, we will see some basics of DEAP. F...

    fantix 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<