原始碼:
contains方法
public
boolean
contains
(object o)
indexof方法
public
intindexof
(object o)
else
return-1
;}
string型別:
arraylist
names =
newarraylist
();names.
add(
"tim");
system.out.
println
(names.
contains
("tim"))
;
分析:
1、建立乙個集合names,新增乙個元素"tim",然後判斷"tim"這個元素在不在集合names中
2、首先會呼叫contains方法,將"tim"傳為o,然後呼叫indexof方法,判斷o不為null之後,將o與集合names中的元素對比,如果相同,返回true,不相同,返回false
3、string型別的物件,contains方法實質上呼叫的是string物件中的equals
包裝類:比如說integer包裝類
arraylist
ages =
newarraylist
();ages.
add(18)
;system.out.
println
(ages.
contains(18
));
分析:
1、建立乙個集合ages,新增乙個元素18,然後判斷18這個元素在不在集合ages中
2、首先會呼叫contains方法,將18傳為o,然後呼叫indexof方法,判斷o不為null之後,將o與集合names中的元素對比,如果相同,返回true,不相同,返回false
3、包裝類型別的物件,contains方法實質上呼叫的是包裝類物件中的equals
自定義類型別:
自定義乙個student類:
public
class
student
}
arraylist
students =
newarraylist
();students.
add(
newstudent
("111"))
;system.out.
println
(students.
contains
(new
student
("111"))
);
分析:
一、重寫前
雖然id都是111,但是輸出結果為false,因為比較的是位址是否相同,他們明顯是兩個物件,所以位址肯定不同,輸出的就是false,就出現問題了,所以要重寫equals方法
二、重寫後
public
class
student
@override
public
boolean
equals
(object obj)
}
首先會呼叫contains方法,將"111"傳為o,然後呼叫indexof方法,判斷o不為null之後,將o與集合students中的元素對比,這個時候使用的是重寫後的equals,obj表示的是集合中的元素,首先要將它下轉型為student,然後將它與contains(new student(「111」))這個new student進行對比,如果相同,返回true,不相同,返回false
三、instanceof
public
class
student
@override
public
boolean
equals
(object obj)
return
false;}
}
arraylist
list =
newarraylist
();list.
add(
newstring()
);system.out.
println
(list.
contains
(new
student
("111"))
);
如果原本是object類型別的,再用上面的就會出錯,就需要新增instanceof,判斷能否下轉型,如果連下轉型都無法實現,就不需要對比了,直接返回false就可以了 詳述ArrayList類contains方法
contains方法原始碼如下 public boolean contains object o 其呼叫的indexof方法如下 public int indexof object o else return 1 string型別的集合 arraylistnames new arraylist na...
詳述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...
詳述抽象類
在介紹抽象類之前,我們想通過 來引入一下。背景 mammal是whale的父類。double price 9 mammal mammal new whale mammal.move 第一行 中實際上有乙個自動型別轉換的過程,因為9屬於整形,要把他變到更大的double型別就要自動型別轉換。第二三行 ...