1、兩個(gè)對象值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對不對?
不對,有相同的hash code。
2、當(dāng)一個(gè)對象被當(dāng)作參數(shù)傳遞到一個(gè)方法后,此方法可改變這個(gè)對象的屬性,并可返回變化后的結(jié)果,那么這里到底是值傳遞還是引用傳遞?
是值傳遞。java 編程語言只由值傳遞參數(shù)。當(dāng)一個(gè)對象實(shí)例作為一個(gè)參數(shù)被傳遞到方法中時(shí),參數(shù)的值就是對該對象的引用。對象的內(nèi)容可以在被調(diào)用的方法中改變,但對象的引用是永遠(yuǎn)不會改變的。
3、swtich是否能作用在byte上,是否能作用在long上,是否能作用在string上?
switch(expr1)中,expr1是一個(gè)整數(shù)表達(dá)式。因此傳遞給 switch 和 case 語句的參數(shù)應(yīng)該是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。
4、寫一個(gè)singleton出來。
singleton模式主要作用是保證在java應(yīng)用程序中,一個(gè)類class只有一個(gè)實(shí)例存在。
一般singleton模式通常有幾種種形式:
第一種形式:定義一個(gè)類,它的構(gòu)造函數(shù)為private的,它有一個(gè)static的private的該類變量,在類初始化時(shí)實(shí)例話,通過一個(gè)public的getinstance方法獲取對它的引用,繼而調(diào)用其中的方法。
public class singleton {private singleton(){}private static singleton instance = new singleton();public static singleton getinstance() {return instance;}}
第二種形式:
public class singleton {private static singleton instance = null;public static synchronized singleton getinstance() {if (instance==null)instance=new singleton();return instance; }}
5、 hashtable和hashmap
hashtable繼承自dictionary類,而hashmap是java1.2引進(jìn)的map inte[被過濾]ce的一個(gè)實(shí)現(xiàn),hashmap允許將null作為一個(gè)entry的key或者value,而hashtable不允許,還有就是,hashmap把hashtable的contains方法去掉了,改成containsvalue和containskey。因?yàn)閏ontains方法容易讓人引起誤解。最大的不同是,hashtable的方法是synchronize的,而hashmap不是,在多個(gè)線程訪問hashtable時(shí),不需要自己為它的方法實(shí)現(xiàn)同步,而hashmap就必須為之提供外同步。hashtable和hashmap采用的hash/rehash算法都大概一樣,所以性能不會有很大的差異。