Java內容梳理(14)API學習(中)
1、String類
(1)常見的建立String物件方式
(1.1)String str1 = "123";
(1.2)String str2 = new String("123");
(1.3)char[] a = new char[] {'1','2','3'}; String str3 = new String(a);
(1.4)byte[] bytes = { '1','1','p' }; String str4 = new String( bytes,"utf-8" );
(2)String型別的特點
String型別表示不可變字串:一旦字串建立完畢後,這個字串的內容就固定不能再發生改變一旦內容發生變
化,JVM會新建另外一個String物件來完成內容的變化要求。字串在拼接的時候,會反覆建立新的記憶體物件,浪費效能。
(3)字串常量池
(a)字串常量/字串直接量:直接用""引起來的東西,如:"123"
(b)池:容器,裝字串常量
(c)運作:JVM在建立字串常量物件時,會先搜尋字串常量池,看看該字串是否已經存在,若存在則直接返回該字串常量的地址,若不存在則會在字串常量池中新建一個字串常量物件,再返回該字串物件的地址。
(4)String類的常用方法
charAt:獲取字串中指定位置字元
length:獲取當前字串的長度
trim:去除字串兩端的空格
indexOf:返回子字串在整個字串的索引位置
indexOf():從左往右找
lastIndexOf():從右往左找
split:分割字串成一個字串陣列(支援正則表示式)
replace:替換指定的子串為新串
replace():不支援正則表示式
replaceAll():支援正則表示式
substring:擷取指定長度的子串
substring(0,5);左閉右開
tartWiths:判斷當前字串是否已指定的字元開頭
endWiths:判斷當前字串是否已指定的字元結尾
toLowerCase / toUpperCase:將串中所有字元轉大小寫
任何型別轉換成字串:加個空串
Student stu = new Student();
String str = stu + "";
(5)StringBuilder類和StringBuffer類
(1)可變字串,字串物件的內容可以改變;在需要大量的字串拼接操作時使用
前者:執行緒不安全類 方法都未使用synchronized關鍵字修飾
後者:執行緒安全類 方法都使用synchronized關鍵字修飾
(2)常用方法
append:追加字串到當前字串
insert:在指定的位置插入指定的字串
delete:刪除指定範圍的字串
setLength:設定字串的長度
2、正則表示式
(1)作用
正則表示式是具有語義的一段字串,用來說明一種格式要求。主要的用途是驗證某個字串是否符合要求。
(2)語法
量詞:用於說明字元可以出現的次數
* 任意次數
+ 至少一次
?最多一次
{n} 出現n次
{n,m} 出現n到m次
{n,} 至少出現n次
分組:()將括號內的內容作為一個整體
取值範圍:[] 如:[0-9]:0~9範圍內取值 [abc]:從a,b,c三者之內取值
邏輯或:| 該操作符兩端的表示式只要滿足其1即可
邏輯非:^ 如:[^0-9]:不能是數字
邊界: ^ 以什麼開頭 $以什麼結尾
Pattern p = Pattern.compile( "^[0-9]*.*[a-z]$" );
特殊符:針對特殊符進行匹配時,要進行轉義
. : 任意字元
\d : 數字,即[0-9]
\D : 非數字
\s : 空格
\S : 非空格
\w : 字母
\W : 非字母
(3)類的用法
Pattern類:格式 定義一種正則表示式格式
Matcher類:匹配器 驗證字串內容是否與正則格式匹配
String str = "bbb";
Pattern p = Pattern.compile("a+");//至少一個a
Mather m = p.mather( str );
System.out.print( m.mathes() );
3、隨機數類
java.util.random類
作用:生成隨機數
寫法:
Random random = new Random();//建立物件
int t = random.nextInt();//int範圍內的隨機數
int s = random.nextInt(10);//指定範圍【0-10),左閉右開
或
Math類也能實現隨機數:
Math.random();//生產(0,1)之間的雙精度(double型)數:小數點後有16位
4、UUID類(生成唯一字串)
作用:生成唯一性的字串標識
UUID.randomUUID();//生成的是物件
所以:
System.out.println( UUID.randomUUID().toString() );//結果隨機但唯一:d7c6ccb6-cc95-4723-938e-694f3fb66f75
若要去掉生成的-:
System.out.println( UUID.randomUUID().toString().replace("-","") );
5、BigDecimal類(高精度計算)
作用:提供高精度計算,因為浮點型別進行計算可能會丟失精度
如:float a = (float) 1.0; float b = (float) 0.9; System.out.println(a-b);
結果:0.100000024
BigDecimal a = new BigDecimal( "1.0" );//注意:引數是字串
BigDecimal b = new BigDecimal( "0.9" );
或者
BigDecimal a = new BigDecimal.valueOf( 1.0 );也可以使用.valueOf()方法
BigDecimal b = new BigDecimal.valueOf( 0.9 );引數就可以不用寫字串
呼叫該物件的方法,來計算浮點型運算
BigDecimal r = a.subtract( b );
System.out.println( r.floatValue() );//結果是:0.1