1. 程式人生 > >Java-三個特殊類

Java-三個特殊類

1.String類

1.1String的兩種例項化方式

a.直接賦值

String str=“hello”;

b.通過構造方法例項化String物件

1.2字串相等比較

str.equals(str1)

public boolean equals(String str1)

1.3字串常量是String類的匿名物件

小tips:在日後的開發過程之中,如果要判斷使用者輸入的字串是否等同於特定字串,一定要將特定字串寫在前面,避免NullPointerException。

1.4 String類兩種例項化的區別

1.採用直接賦值:

String str1 = "hello" ;

String str2 = "hello" ;

String str3 = "hello" ;

System.out.println(str1 == str2); // true

System.out.println(str1 == str3); // true

String類的設計使用了共享設計模式

在JVM底層自動維護一個字串物件池(物件陣列)。

如果採用直接賦值的模式進行String類的物件例項化操作,此物件將自動儲存到物件池中,如果下次繼續採用直接賦值的模式宣告String、物件,先去物件池中找是否有指定內容,如果有,直接引用。如果沒有,開闢新空間而後將其保

2.採用構造方法

在String類中提供有方法入池操作public String intern() ;(字串手工入池操作:)

面試題:請解釋String類中兩種物件例項化的區別

1. 直接賦值:只會開闢一塊堆記憶體空間,並且該字串物件可以自動儲存在物件池中以供下次使用。 2. 構造方法:會開闢兩塊堆記憶體空間,其中一塊成為垃圾空間,不會自動儲存在物件池中,可以使用intern() 方法手工入池。

因此,我們一般會採取第一種方式即直接賦值。

1.5字串不可變更

字串一旦定義不可改變

所有的語言對於字串的底層實現,都是字元陣列,陣列的最大缺陷就是長度固定。在定義字串常量時,它的內 容不可改變。

原則:

1. 字串使用就採用直接賦值。

2. 字串比較就使用equals()實現。

3. 字串別改變太多。

1.6字元與字串******

String<->char

字元陣列char[]<->String

public String(char[ ] value1);

public  String(char[ ] value1,int offset,int count);

將字串按照索引轉為單個字元

String->char

public char charAt(int index)取得制定索引的字元返回

將字串轉為字元陣列

String->char[ ]

public char[ ] toCharArray();

1.7位元組與字串

1.7.1 byte-〉String

String構造方法

public String(byte bytes[ ])

String-〉byte[ ]

*****public byte[ ] getBytes(String charset)按照規定編碼轉為位元組陣列

1.8字串的比較

〉0表示本字串大於目標字串

=0 二者相等

〈0表示本字串小於目標字串

1.9 字串的查詢

  • 判斷一個子字串是否存在

public boolean contains(CharSequence s)

  • 判斷是否以指定字串開頭

public boolean startswith(String prefix)

  • 從指定位置開始判斷是否以指定字串開頭

public boolean startswith(String prefix,int offset)

  • 判斷是否以指定字串結尾

public boolean endswith(String suffix)

1.10字串的替換

1.11字串的拆分

特殊字元需要轉義後拆分 \\

eg:\\

1.12字串的擷取

2. 左閉右開

1.13字串的其他操作方法

1.14StringBuffer類andStringBuilder類

  • 字串拼接方法

public synchronized StringBuffer append(各種資料型別 b)

  • StringBuffer與String的相互轉換
  • String變為StringBuffer:利用StringBuffer的構造方法或append()方法
  • StringBuffer變為String:呼叫toString()方法。

除了append()方法之外,String也有一些String類

沒有的方法

  • 字串的反轉

public synchronized StringBuffer reverse()

  • 刪除指定範圍的資料

public synchronized StringBuffer delete(int start,int end)

  • 字串的插入操作

public synchronized StringBuffer insert(int offset, 各種資料型別 b)

面試題:請解釋String、StringBuffer、StringBuilder的區別:

  • String的內容不可修改,StringBuffer與StringBuilder的內容可以修改.
  • StringBuffer(JDK1.0)採用同步處理,屬於執行緒安全操作,但效率較高;而StringBuilder(JDK1.5)採用非同步處理,屬於執行緒不安全操作,效率較高,當在String物件進行“+”,編譯時會將String類變為StringBuilder進行append處理。

Object類-最高參數統一化

Object類是Java預設提供的一個類。Java裡面除了Object類,所有類都是存在繼承關係的。預設繼承Object父類,即,所有的類的物件都可以使用Object進行接收

系統輸出預設呼叫物件的toString()方法

Object中的toString()只是簡單輸出當前所引用的類名稱以及物件地址,如果想在類中取的本類屬性資訊,需要覆寫toString();