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