1. 程式人生 > >Java內容梳理(14)API學習(中)

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