前言
我們在做專案時候經常需要對字串進行處理,判斷,操作,所以我就總結了一下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區別
首先的區別是,equals 是方法,而 == 是操作符;
equals
比較的是兩個字串內容而不是引用==
在比較物件時比較的是引用地址是否相同,在比較基本型別時比較的是其內容
@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有很多子專案,常用的專案如下
詳細使用參考這裡點選進入