詳述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;
}
instanceofarraylistlist = 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中什麼是類和物件
所謂物件就是真實世界中的實體,物件與實體是一一對應的,也就是說現實世界中每乙個實體都是乙個物件,它是一種具體的概念。類是具備某些共同特徵的實體的集合,它是一種抽象的概念,用程式設計的語言來說,類是一種抽象的資料型別,它是對所具有相同特徵實體的抽象。類與物件的關係 類是物件的集合,物件是類的例項 物件...