1,short s1=1;s1=s1+1;有什麼錯???答:s1為short型,1為int型,s1+1=2先為int型,S1為short型,所以需要通過強制轉化—s1=(short)(s1+1); 舉例:short s1=1;s1+=1;(正確,因為可以自動轉化)2,請簡述equals與==的區別在String中,equals對比的是內容,==是比較地址3,sleep與wait的區別(1)sleep方法可以設置線程阻塞的時間,而wait方法必須要notily方法來喚醒 (2)sleep方法屬於Thread類,而wait屬於Object類(3)sleep方法不會釋放鎖的資源,而wait方法會釋放鎖的資源 面試官:每個引用對象都有wait方法嗎?答:都有,因為每個類都會繼承Object基類4,String,Stringbuffer,Stringbuidder的區別?(1)String是JAVA的基礎類,他可以定義少量的字符串(2)StringBuffer是對String的擴充,他可以拼接大量字符串,但是他的效率比較低,因為他是線程安全的(3)StringBuidder是對StringBuffer的拓展,他提高了效率,但是他是線程不安全的5,ArrayList和Vector的區別?(1)ArrayList底層是用數組實現的,所以查找快,增刪慢,ArrayList是線程不安全的(2)Vector由於是線程安全的,所以他的效率要比ArrayList底的多6,Super關鍵字的使用?(1)Super關鍵字實現的前提必須要有繼承(2)Super關鍵字可以調用父類的方法,屬性,通過Super.方法名,Super.屬性 (3)Super關鍵字必須位於類的第一行7,創建線程有哪幾種方法??常見的創建線程的方法 (1)繼承Thread類,調用start()方法 (2)實現Runnable接口,重寫run方法,調用start方法8,Synchronized可以加在什麼地方?(1)Synchronized可以加在方法上,可以加在類上。Synchronized是一把重量級鎖9,什麼是線程同步?(1)一個線程重開始到結束都不可以被打斷,直到這個線程釋放鎖,共享印表機就是一個線程同步的實例,10,Query接口的List和iterate方法的區別? 什麼是Query?Query是查詢的意思,在資料庫中查詢一個文件或記錄, 個人理解:List和Iterate都可以訪問資料庫,只不過iterator如果要查找的數據緩存中有就直接從緩存中拿,而不去在查找資料庫了。1211,數組中有沒有length()方法,String有沒有這個方法?(1)數組中沒有這個方法,使用length屬性,返回的結果應該是數組的長度int[] arr={1,2,3,4,5}; int length1=arr.length;//求數組的長度(2)String裡面有這個方法,返回的是該字符串的長度String str="Hello"; int length2=str.length(); //求字符串的長度12,try{}裡面有一個return語句,finally裡面也有一個return語句,finally裡面的語句會不會被執行,在return前還是return後?我們都知道,不管發什麼,finally裡面的語句一定會被執行,所以12題的答案是會被執行 廢話不多說,看代碼 int x=1; try{ return ++x }finallu{ return ++x; }結果為 x=3; 原因很簡單,因為finally語句塊的代碼始終要執行,所以在try裡面碰到return的話實現不返還的等執行完finally一後在返回try裡面的return13,JAVA中,運行任意一個相同的循環代碼,是否每次執行完的時間都相同,為什麼?不相同,隨著代碼的運行,會在jvm中產生大量的垃圾,隨著垃圾越來越多,效率也會越來越慢14,說出ArrayList,LinkList,Vector的存儲機制和特性(1)ArryaList:底層是用數組實現的,查找快,增刪慢,線程不安全,適用於單線程(2)LinkList底層用鍊表實現的,適合插入刪除,不適合查找,線程不安全,適用於單線程(3)Vector:底層用數組實現的,查找快,增刪慢,線程安全,適合多線程15,this關鍵字?(1)static修飾的方法不能用this關鍵字(2)this關鍵字表示當前對象,通過this關鍵字可以調用本類的方法屬性(3)this關鍵字可以區別變量名16,break和continue的區別??(1)break和continue都是用來控制循環體的(2)break是直接結束他所在的循環,而continue是結束他這一次循環,繼續下一次的循環(3)break可以在switch中使用,而continue只能在循環中使用17,char類型能否存儲漢字??(1)在C語言中不可以存儲,因為漢字佔倆個字節,而C語言的char只有一個字節但是他可以在java中存儲因為java 的char佔倆個字節(2)拓展:unicode編碼是java默認的編碼格式,佔16位,倆個字節18,靜態變量與實例變量的區別??(1)在語義上:靜態變量用static所修飾、被static所修飾的變量只被初始化一次(2)在運行上:靜態變量屬於類,實例變量屬於對象(3)被ststic所修飾的方法和類都是先被加載。19,是否可以從一個static方法中調用一個非靜態的方法??(1)不可以,因為被static修飾的方法在類初始化的時候就被加載,而非靜態的方法可能在這個時候還沒有完成初始化20,int與integer的區別(1)int是java 的基本數據類型,interger是java的類(2)拓展:integer a = new integer(127);integer b = new integer(127);integer c = new integer(128);integer d = new integer(128);a==b?? true;c==d?? false;原因:Integer在-127-128之間,返回的是一個是已存在的對象,如果不在這個範圍,返回的是新new出來的對象21,簡述JDK1.5的新特性??(1)for-each循環(2)自動裝箱拆箱(3)靜態導入(4)範型22,什麼是單利模式,為什麼要用單利模式?(1)單例模式是一種設計模式,他提供了一種創建對象的最佳方式,注意:單例模式只有一個實例單例類必須提供一個方法可以訪問拓展:單例類的構造函數是被私有的23,重載和重寫的區別?(1)重載是在一個類中,參數列表不同,參數個數不同,參數類型不同(2)重寫必須要有繼承的前提,重寫方法拋出的異常不可以大於父類拋出的異常拓展:在重載中方法的返回類型不同是否構成重載?(1)不能構成重載,重載必須要用參數來區分,傳入不同參數,可以實現重載。