Java 字符串格式化和工具類使用


前言

我們在做項目時候經常需要對字符串進行處理,判斷,操作,所以我就總結了一下java 字符串一些常用操作,和推薦比較好用我在自用的工具類,畢竟有輪子我們自己就不用重復去寫了,提供開發效率,剩下的時間就去約女朋友吧哈哈哈!!!!

java 內置操作

format

我們知道平時我們都會做字符串拼接打印操作,單還是在用➕號嘛,那樣就很low為力顯示逼格,使用format操作很有必要😄

String類的format()方法用於創建格式化的字符串以及連接多個字符串對象,制定字符串格式和參數生成格式化的字符串。顯示不同轉換符實現不同數據類型到字符串的轉換

測試用例

    @Test
    public void a() {
        String str = "";
        str = String.format("Hi,%s", "王力");
        System.out.println(str);
        str = String.format("Hi,%s:%s.%s", "王南", "王力", "王張");
        System.out.println(str);
        System.out.printf("字母a的大寫是:%c %n", 'A');
        System.out.printf("3>7的結果是:%b %n", 3 > 7);
        System.out.printf("100的一半是:%d %n", 100 / 2);
        System.out.printf("100的16進制數是:%x %n", 100);
        System.out.printf("100的8進制數是:%o %n", 100);
        System.out.printf("50元的書打8.5折扣是:%f 元%n", 50 * 0.85);
        System.out.printf("上面價格的16進制數是:%a %n", 50 * 0.85);
        System.out.printf("上面價格的指數表示:%e %n", 50 * 0.85);
        System.out.printf("上面價格的指數和浮點數結果的長度較短的是:%g %n", 50 * 0.85);
        System.out.printf("上面的折扣是%d%% %n", 85);
        System.out.printf("字母A的散列碼是:%h %n", 'A');
    }

打印結果

 .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.4.7)

2021-09-10 10:42:07 INFO  background-preinit org.hibernate.validator.internal.util.Version HV000001: Hibernate Validator 6.1.7.Final
2021-09-10 10:42:07 INFO  main PropertiesTest Starting PropertiesTest using Java 1.8.0_202 on xiangyongdeMacBook-Pro.local with PID 46281 (started by xiangyong in /Users/xiangyong/selfProject/project/kmall/kmall-api)
2021-09-10 10:42:07 INFO  main PropertiesTest The following profiles are active: test,mptest
 _ _   |_  _ _|_. ___ _ |    _ 
| | |\/|_)(_| | |_\  |_)||_|_\ 
     /               |         
                        3.4.1 
2021-09-10 10:42:13 INFO  main PropertiesTest Started PropertiesTest in 6.755 seconds (JVM running for 8.519)

Hi,王力
Hi,王南:王力.王張
字母a的大寫是:A 
3>7的結果是:false 
100的一半是:50 
100的16進制數是:64 
100的8進制數是:144 
50元的書打8.5折扣是:42.500000 元
上面價格的16進制數是:0x1.54p5 
上面價格的指數表示:4.250000e+01 
上面價格的指數和浮點數結果的長度較短的是:42.5000 
上面的折扣是85% 
字母A的散列碼是:41 

更多格式進入參考這里

equals

兩個字符串做比較,當然這里比較的話就不得不提老生常談的問題,==和equals區別

  1. 首先的區別是,equals 是方法,而 == 是操作符;

  2. equals比較的是兩個字符串內容而不是引用

  3. ==在比較對象時比較的是引用地址是否相同,在比較基本類型時比較的是其內容

@Test
    public void a() {
        // s1與s2不是同一個對象
        String s1 = new String("aaa");
        String s2 = new String("aaa");

        System.out.println(s1 == s2);            //false
        System.out.println(s1.equals(s2));    //true


        // s5與s6是基本數據類型
        String s5 = "aaa";
        String s6 = "aaa";

        System.out.println(s5==s6);            //true
        System.out.println(s5.equals(s6));    //true

        //s3和s4是同一個地址的引用
        String s3 = new String("aaa");
        String s4 = s3;

        System.out.println(s3==s4);            //true
        System.out.println(s3.equals(s4));    //true

    }

注意我們看到s5==s6是true而s1 == s2是false,因為s5和s6是基本數據類型此時比較的是值,s1和s2是對象比較的是引用所以是不同兩個String對象比較引用

這里涉及到基本數據類型:

Java中有8種基本數據類型(字母開頭小寫),即boolean、byte、short、char、int、float、long、double,基本數據類型不是對象,放在堆棧中,用完就銷毀,訪問速度快。而對象放在堆中。如果必須用到對象Java針對每種基本數據類型提供了包裝類,即Boolean、Byte、Short、Character、Integer、Float、Long、Double(開頭大寫)等。

詳細深入參考點擊進入

toString

返回當前String對象的字符串表示形式,一般用於打印對象信息方便快捷,所有類都繼承object,任何類,都可以重寫toString方法

工具類

hutool

借用官方引用:

Hutool是一個小而全的Java工具類庫,通過靜態方法封裝,降低相關API的學習成本,提高工作效率,使Java擁有函數式語言般的優雅,讓Java語言也可以“甜甜的

點擊進入官網導航 強烈推薦

已發布maven中央倉庫,多么模塊可以單獨引用某一個模塊,也可以引用全部,

包含組件如下:

Apache Commons

分的比較·散亂單,應為不是專門的工具庫,但是用起來還是挺不錯的
使用頻率最高的框架。有很多實用的工具類並沒有全部列出來,只列出了最基礎的一部分,感興趣的小伙伴,可以看官方的api進行更深入的學習

Apache Commons有很多子項目,常用的項目如下

詳細使用參考這里點擊進入


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM