天天看點

第七篇 黑馬程式員-多态與String類以及基本資料類型的包裝類

------- android教育訓練、java教育訓練、期待與您交流! ---------

一.

多态的概念:

可以了解為事物存在的多種展現形态。

打個比方:

人:男人,女人

動物:貓,狗。

貓 x=new 貓();

動物 x=new 貓();

多态的一種形式:

父類指向子類對象,當我想使用子類特有内容的時候,就向下轉型,如下代碼所示:

package circulate;

public class Demo4

{

 private int num;

 Demo4(int num)

 {

  this.num=num;

 }

 public boolean equals(Object obj)

 {

  Demo4 d=(Demo4)obj;//父類指向子類對象,當我想使用子類特有内容的時候,就向下轉

  return this.num==d.num;

 }

}

public class ObjectDemo

{

 public static void main(String[] args)

 {

  Demo4 d1=new Demo4(4);

  Demo4 d2=new Demo4(4);

  System.out.println(d1.equals(d2));

 }

}

1.多态的展現

父類的引用指向了自己的子類對象

父類的引用也可以接受自己的子類對象

2.多态的前提

必須是類與類之間有關系,要不是繼承或實作

通常還有一個前提 那就是覆寫

3.多态的好處

多态的出現大大提高了程式的擴充性

4.多态的弊端

提高了擴充性,但是隻能使用父類中的引用通路父類中的成員

5.多态的出現代碼中的特點(多态使用的注意事項)

在編譯時期,參閱引用型變量所屬的類中是否有調用的方法,如果有,編譯通過。反之,失敗

在運作時期參閱對象所屬的類中是否y9ou調用的方法。

簡單總結:成員函數在多态調用時,編譯看左邊,運作看右邊。

在多态中,無論編譯和運作,都參考左邊(引用型變量所屬的類)

在多态中,靜态成員函數的特點:

無論編譯和運作,都參考左邊。

字元串String:

字元串最大特點,一旦被初始化,就不可以改變。

字元串是否是以指定内容開頭

boolean startsWith(str)

字元串是否以指定内容結尾

boolean endsWith(str);

字元串中是否有内容

boolean isEmpty();此方法的原理就是判斷長度是否為0,0和""以及null有差別,""表示一個對象,null

是指向空

字元串中是否包含一個子串

boolean contains(str);

判斷字元串内容是否相同

boolean equals(str);

判斷内容是否相同,并忽略大小寫

boolean equalsIgnoreCase();

轉換:

将字元數組轉成字元串

構造函數:String(char[])

String(char[],offset.count):将字元數組值的一部分轉換成字元串

将基本資料類型轉成字元串

static String valueOf(int)

static String valueOf(double)

舉例:比如3+"";是一個字元串,那麼String.valueOf(3)和它一樣

将位元組數組轉成字元串

String(byte[])

String(byte[],offset,count):将位元組數組中的一部分轉成字元串

将字元串轉成字元數組

char[] toCharArray();

将字元串轉成位元組數組

byte[] getBytes();

替換:

String replace(oldchar,newchar);

切割:

String[] split(regex);

子串:擷取字元串中的一部分

String subString(begin);

String subString(begin,end);

轉換,去除空格,比較

1.将字元串轉成大寫或者小寫。

String toUpperCase();

String toLowerCase();

String trim();

3.對兩個字元串進行自然順序的比較

int comparTo(String);

StringBuffer類:

什麼時候用呢?當資料類型不确定,而且最終變成字元串,而且資料的個數不确定,用這個比較友善,比

數組友善

字元串的組成原理就是通過該類實作的

StringBuffer可以對字元串内容進行增删

StringBuffer是一個容器,且是可變化的,位元組可以操作多個資料類型,最終會通過toString方法變成字元

串,這就是StringBuffer的三個特點

很多方法與String相同

StringBuffer是可變長度的

它是一個容器,是以就有以下功能:

1.存儲

StringBuffer append():将指定資料作為參數添加到已有資料結尾

StringBuffer insert(index,資料):可以将資料插入指定index

2.删除

StringBuffer delete(start,end):删除緩沖區中的資料,包含start,不包含end.

StringBuffer  deleteCharAt(index):删除指定位置的字元

3.修改

StringBuffer replace(start,end,要替換的資料String)

void setCharAt(int index,char ch):替換

4.反轉

StringBuffer reverse();

5.void getChars(int srcBegin,int srcEnd,char[] dst,int dstBegin)

将緩沖區中指定資料存儲到指定數組中

StringBuilder類:

在jdk1.5之後出現的

不同之處是StringBuffer是線程同步

StringBuilder:是線程不同步的

更新三個因素:

提高效率

簡化書寫

提高安全性

基本資料類型的對象包裝類:

byte-Byte short-Short int-Integer long-Long  boolean-Boolean  float-Float

double-Double  char-Character

基本資料類型對象包裝類的最常見作用,就是用于基本資料類型和字元串類型之間作轉換

1.基本資料類型轉字元串

基本資料類型+""

基本資料類型.toString(基本資料類型值)

如:Integer.toString(34):就是将34整數變成"34"

2.字元串轉基本資料類型

基本資料類型包裝類.parse基本資料類型,比如:

xxx a=xxx.parsexxx(String)

int a=Integer.parseInt("123");

double b=Double.parseDouble("12.23");

boolean b=Boolean.parseBoolean("true");

十進制轉成其他進制

toBinaryString();

toHexString();

toOctalString();

其他進制轉成十進制

parseInt(String,radix);

有一個intValue的方法也可以把一個Integer對象變成一個int值,比如

Integer i=new Integer("123");

int num=i.intValue();

注意:Integer本身複寫了Object裡面的equals方法,它建立了本對象自己比較相同的特有方式,他比較的

是數值是否相同。

-------- android教育訓練、java教育訓練、期待與您交流! ----------