詳述ArryList類中是contains方法

2021-10-05 02:38:20 字數 1594 閱讀 8498

詳述arrylist類中是contains方法

原始碼

public boolean contains(object o)
public int indexof(object o)  else 

return -1;

}

string 型別

arraylistlist = new arraylist();

list.add("jim");

system.out.println(list.contains("jim"));

分析:list集合中儲存的是string型別的資料,呼叫contains()方法,然後呼叫indexof(),因為傳遞的值不為空,所以走else**部分,然後呼叫string型別的equals方法,比較的是字串是否相等

包裝類

arraylistlist = new arraylist();

list.add(12);

system.out.println(list.contains(12));

分析:此時list集合中儲存的是int型別的封裝類,呼叫interger型別的equals方法,比較的是值是否相等

自定義類

自定義乙個學生類

public class student 

public string getid()

public void setid(string id)

}

新增學生

arraylistlist = new arraylist();

list.add(new student("12"));

system.out.println(list.contains(new student("12")));

分析:

重寫equals方法前:此時list集合中儲存的是student型別的自定義資料,呼叫contains()方法,然後呼叫indexof(),因為傳遞的值不為空,所以走else**部分,然後呼叫的是object裡的equals方法,比較的是位址是否相等

重寫equals方法後:呼叫的是自定義的equals方法

@override

public boolean equals(object obj)

return false;

}

instanceof
arraylistlist = new arraylist();

list.add(new string("12"));

system.out.println(list.contains(new student("12")));

分析:此時list中可以放string型別的資料,也可以放student型別資料,當執行到equals方法時無法將string型別的資料強轉成student型別的資料,所以重寫的equals方法中強轉之前先判斷是否是student資料型別,若不是student型別則可以直接返回false

詳述ArrayList類中contains方法

原始碼 contains public boolean contains object o indexof public int indexof object o else return 1 string型別 arraylistnames new arraylist names.add aa sys...

Thread類中sleep是為什麼是靜態方法

thread類中sleep是靜態方法,表示當前執行緒休眠。thread的api public static native void sleep long millis throws interruptedexception causes the currently executing thread ...

java中什麼是類和物件

所謂物件就是真實世界中的實體,物件與實體是一一對應的,也就是說現實世界中每乙個實體都是乙個物件,它是一種具體的概念。類是具備某些共同特徵的實體的集合,它是一種抽象的概念,用程式設計的語言來說,類是一種抽象的資料型別,它是對所具有相同特徵實體的抽象。類與物件的關係 類是物件的集合,物件是類的例項 物件...