每日一例 | String那些事

前言
String是一個特別基礎的類,更是我們離不開的一個類,可以說在所有項目中,不可能不用String,所以我們今天就來看下String的一些知識點,看下你到底掌握了沒有。我們廢話少說,直接開始。
String
不可變類
我們在第一次學習String的時候,就被告知String是不可變的類,不可以被繼承。具體的原因就是String類是final修飾的:

當然,String字符串創(chuàng)建后,不能變化也是因為final關鍵字,看上圖,我們發(fā)現(xiàn)value前面也有final,而且是私有的,沒有對外提供可訪問的方法,所以String的value只能被賦值一次。
如果你要繼承String,他會有這樣的提示錯誤:

意思就是無法繼承final的類。
常用的方法
作為一個最常用的類之一,String有著特別豐富的方法,以滿足我們各種需求:
| 方法 | 參數(shù) | 應用 |
|---|---|---|
| length() | 返回字符串長度 | |
| charAt() | int索引 | 獲取string中索引對的的char |
| getChars(),getBytes() | 要復制部分的起點和終點,復制的目標數(shù)組,目標的起始索引 | 復制char或byte到目標數(shù)組中 |
| toCharArray() | 生成一個char[],包含string的所有字符 |
方法比較多,時間關系,我們先寫這個,等晚上了,我把其他也補充上。
格式化輸出
這一塊其實我以前也很少有,但是最近了解了下,發(fā)現(xiàn)還是方便的。以前輸出字符串我們是這也操作的:
int x = 0, y = 2;
System.out.print("Row 1 :" + x + ","+ y);
但是在jdk1.5以后,我們可以這樣輸出了:
System.out.printf("Row 1 :%d, %d", x, y);
或者這樣:
System.out.format("Row 1 :%d, %d", x, y);
上面,這些寫法輸出結(jié)果都是一樣的:

對于prinf和format想要換行,直接在字符串后面加上換行符即可(\n)
format方法
這里我們著重說下format方法。她也是jdk1.5引入的,她可以滿足你的各種字符串拼接需求,特別方便:
String format = String.format("x = %d, y = %d, x + y = %d", x, y, x + y);
System.out.println(format);
結(jié)果:
x = 0, y = 2, x + y = 2
下面是format支持的參數(shù)類型:
| 參數(shù) | 說明 |
|---|---|
| d | 整數(shù)(十進制) |
| c | Unicode字符 |
| b | Boolean值 |
| s | String |
| f | 浮點數(shù)(十進制) |
| e | 浮點數(shù)(科學計數(shù)) |
| x | 整數(shù)(十六進制) |
| h | 散列碼(十六進制) |
| % | 字符"%" |
通過% + 上面這些參數(shù),你可以實現(xiàn)各種字符串拼接的需求。
當然,我們也可以通過Formatter實現(xiàn)各種字符串的拼接,因為format方法本身就是通過formatter實現(xiàn)的:

正則表達式
正則表達式也算是比較重要,而且用的比較多的知識了,由于內(nèi)容太多了,這里我們就簡單說下的的應用。一般我們會用它來實現(xiàn)參數(shù)的校驗,比如日期格式校驗、金額格式校驗、手機號校驗、身份證號校驗。
String str = "2021-05-20";
String pattern = "^\\d\\d\\d\\d-\\d\\d-\\d\\d";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(str);
System.out.println(m.matches());
上面的代碼,只有是2021-05-20這樣的格式才會被匹配,結(jié)果為true,否則是false。下面這些都是不匹配的:
2021-5-20
2021-5-200
2021-05-200
2021-005-20
當然,2021-05-00、2021-00-20、2020-00-00、0000-00-00也是可以匹配的,但他們對java而言是合法的日期格式:
System.out.println(new SimpleDateFormat("yyyy-MM-dd").parse(str));
第一個對應的日期是
Fri Apr 30 00:00:00 CST 2021
也就是2021-04-30
第二個對應的日期是
Sun Dec 20 00:00:00 CST 2020
也就是2020-12-20
第三個對應的日期是
Mon Nov 30 00:00:00 CST 2020
也就是2020-11-30
第四個對應的日期是
Mon Nov 30 00:00:00 CST 2020
也就是0002-11-30
其他的正則表達式,感興趣的小伙伴自己去了解,在實際開發(fā)過程中,數(shù)據(jù)校驗用起來很方便,比如excel導入的數(shù)據(jù)。
當然,正則這塊還有一個比較強大的功能,就是數(shù)據(jù)替換,由于時間問題,我們就不在講了,感興趣的小伙伴自己去了解。
總結(jié)
對于String常用的方法,小伙伴肯定都比較熟悉,但是format和正則表達式這塊平時用到開發(fā)中的小伙伴肯定比較少,我們希望在今天分享之后,大家能把這兩個比較強大,而且用起來很方便的知識點,真正用到實際開發(fā)中,它們一定會極大提升你的開發(fā)效率的,讓我們一起加油努力吧,奧里給
!
項目路徑:
https://github.com/Syske/example-everyday
本項目會每日更新,讓我們一起學習,一起進步,遇見更好的自己,加油呀
- END -