java 面試題整理《一》

Java代碼 複製代碼 收藏代碼
  1. Java面試題整理   
  2. Java面向對象   
  3. 1super()與this()的區別?   
  4. This():當前類的對象,super父類對象。   
  5. Super():在子類訪問父類的成員和行爲,必須受類繼承規則的約束   
  6. this他代表當前對象,當然所有的資源都可以訪問.   
  7. 在構造函數中,如果第一行沒有寫super(),編譯器會自動插入.但是如果父類沒有不帶參數的構造函數,或這個函數被私有化了(用private修飾).此時你必須加入對父類的實例化構造.而this就沒有這個要求,因爲它本身就進行實例化的構造.   
  8. 而在方法中superthis使用的方法就差不多了.只不過super 要考慮是否能訪問其父類的資源.   
  9.   
  10. 2. 作用域public,protected,private,以及不寫時的區別?   
  11.  Public:不同包、同一包、類內都可用   
  12.  Private:類內   
  13.  Protected: 不同包的子類、同一包、類內都可用   
  14.  不寫時:同一包內、類內   
  15.   
  16. 3. 編程輸出如下圖形。   
  17. * * * * *   
  18. * * * *   
  19. * * *   
  20. * *   
  21. *   
  22. 代碼如下:   
  23. public class Print {   
  24. public static void main(String[] args) {   
  25. for (int i = 0; i < 5; i++) {   
  26. for (int j = 5; j > i; j–) {   
  27. System.out.print(“*”);   
  28. }   
  29. System.out.println();   
  30. }   
  31. }   
  32. }   
  33. 4. JAVA的事件委託機制和垃圾回收機制   
  34. java 事件委託機制的概念,一個源產生一個事件並將它送到一個或多個監聽器那裏。在這種方案中,監聽器簡單的等待,直到它收到一個事件。一旦事件被接受,監聽器將處理這個事件,然後返回。   
  35. 垃圾回收機制 垃圾收集是將分配給對象但不再使用的內存回收或釋放的過程。如果一個對象沒有指向它的引用或者其賦值爲null,則次對象適合進行垃圾回收   
  36.   
  37. 5. 在JAVA中,如何跳出當前的多重嵌套循環?   
  38. breakreturn 方法。   
  39. 6. 什麼是java序列化,如何實現java序列化?(寫一個實例)   
  40. 序列化:   
  41. 處理對象流的機制,所謂對象流也就是將對象的內容進行流化。可以對流化後的對象進行讀寫操作,也可將流化後的對象傳輸於網絡之間。序列化是爲了解決在對對象流進行讀寫操作時所引發的問題。   
  42. 序列化的實現:   
  43. 將需要被序列化的類實現Serializable接口,該接口沒有需要實現的方法,implements Serializable只是爲了標註該對象是可被序列化的,然後使用一個輸出流(如:FileOutputStream)來構造一個ObjectOutputStream(對象流)對象,接着,使用ObjectOutputStream對象的writeObject(Object obj)方法就可以將參數爲obj的對象寫出(即保存其狀態),要恢復的話則用輸入流。   
  44.   
  45. 7. 一個”.java”源文件中是否可以包括多個類(不是內部類)?有什麼限制?   
  46. 可以。如果這個類的修飾符是public,其類名與文件名必須相同。   
  47. 8. 排序都有哪幾種方法?請列舉。用JAVA實現一個快速排序?   
  48. 排序的方法有:插入排序(直接插入排序、希爾排序),交換排序(冒泡排序、快速排序),選擇排序(直接選擇排序、堆排序),歸併排序,分配排序(箱排序、基數排序)   
  49. 快速排序的僞代碼。   
  50. 9. Overload和Override的區別。Overloaded的方法是否可以改變返回值的類型?   
  51. 方法的   
  52. 重寫Override,子類覆蓋父類的方法,將子類傳與父類的引用調用的還是子類的方法。   
  53. 重載Overloading 一個類多個方法,名稱相同,參數個數類型不同。   
  54. 兩者都是Java多態性的不同表現。   
  55. Overloaded的方法是可以改變返回值的類型。   
  56.   
  57. 1, public class Ctest()   
  58. {   
  59. Public static void main()   
  60. {   
  61. System.out.prinln(8+8+”88”+8+8);   
  62. }   
  63. }   
  64.   
  65. 168888  
  66. 10. Final類有什麼特點?   
  67. 屬性常量   
  68. 方法不可以overridding   
  69. 類不可以繼承   
  70. 11. 繼承時候類的執行順序問題,一般都是選擇題,問你將會打印出什麼?   
  71. 答:父類:   
  72. package test;   
  73. public class FatherClass   
  74. {   
  75. public FatherClass()   
  76. {   
  77. System.out.println(“FatherClass Create”);   
  78. }   
  79. }   
  80. 子類:   
  81. package test;   
  82. import test.FatherClass;   
  83. public class ChildClass extends FatherClass   
  84. {   
  85. public ChildClass()   
  86. {   
  87. System.out.println(“ChildClass Create”);   
  88. }   
  89. public static void main(String[] args)   
  90. {   
  91. FatherClass fc = new FatherClass();   
  92. ChildClass cc = new ChildClass();   
  93. }   
  94. }   
  95. 輸出結果:   
  96. C:>java test.ChildClass   
  97. FatherClass Create   
  98. FatherClass Create   
  99. ChildClass Create   
  100. 12. 內部類的實現方式?   
  101. 答:示例代碼如下:   
  102. package test;   
  103. public class OuterClass   
  104. {   
  105. private class InterClass   
  106. {   
  107. Public Interlass()   
  108. {   
  109. System.out.println(“InterClass Create”);   
  110. }   
  111. }   
  112. public OuterClass()   
  113. {   
  114. InterClass ic = new InterClass();   
  115. System.out.println(“OuterClass Create”);   
  116. }   
  117. public static void main(String[] args)   
  118. {   
  119. OuterClass oc = new OuterClass();   
  120. }   
  121. }   
  122. 輸出結果:   
  123. C:>java test/OuterClass   
  124. InterClass Create   
  125. OuterClass Create   
  126. 13. 用JAVA實現一種排序,JAVA類實現序列化的方法(二種)?   
  127. 14. 如在COLLECTION框架中,實現比較要實現什麼樣的接口?   
  128. 15. 用插入法進行排序代碼如下   
  129. package test;   
  130. import java.util.*;   
  131. class InsertSort   
  132. {   
  133. ArrayList al;   
  134. public InsertSort(int num,int mod)   
  135. {   
  136. al = new ArrayList(num);   
  137. Random rand = new Random();   
  138. System.out.println(“The ArrayList Sort Before:”);   
  139. for (int i=0;i {   
  140. al.add(new Integer(Math.abs(rand.nextInt()) % mod + 1));   
  141. System.out.println("al["+i+"]="+al.get(i));   
  142. }   
  143. }   
  144. public void SortIt()   
  145. {   
  146. Integer tempInt;   
  147. int MaxSize=1;   
  148. for(int i=1;i {   
  149. tempInt = (Integer)al.remove(i);   
  150. if(tempInt.intValue()>=((Integer)al.get(MaxSize-1)).intValue())   
  151. {   
  152. al.add(MaxSize,tempInt);   
  153. MaxSize++;   
  154. System.out.println(al.toString());   
  155. else {   
  156. for (int j=0;j {   
  157. if    
  158.   
  159. (((Integer)al.get(j)).intValue()>=tempInt.intValue())   
  160. {   
  161. al.add(j,tempInt);   
  162. MaxSize++;   
  163. System.out.println(al.toString());   
  164. break;   
  165. }   
  166. }   
  167. }   
  168. }   
  169. System.out.println(“The ArrayList Sort After:”);   
  170. for(int i=0;i {   
  171. System.out.println("al["+i+"]="+al.get(i));   
  172. }   
  173. }   
  174. public static void main(String[] args)   
  175. {   
  176. InsertSort is = new InsertSort(10,100);   
  177. is.SortIt();   
  178. }   
  179. }    
  180.   
  181. JAVA類實現序例化的方法是實現java.io.Serializable接口   
  182. Collection框架中實現比較要實現Comparable 接口和 Comparator 接口   
  183.   
  184. 16. 編程:編寫一個截取字符串的函數,輸入爲一個字符串和字節數,輸出爲按字節截取的字符串。 但是要保證漢字不被截半個,如"我ABC"4,應該截爲"我AB",輸入"我ABC漢DEF"6,應該輸出爲"我ABC"而不是"我ABC+漢的半個"。   
  185. 答:代碼如下:   
  186. public static void split(String source,int num) throws Exception   
  187. {   
  188. int k=0;   
  189. String temp="";   
  190. for (int i = 0; i {   
  191. byte[] b=(source.charAt(i)+"").getBytes();   
  192. k=k+b.length;   
  193. if(k>num)   
  194. {   
  195. break;   
  196. }   
  197. temp=temp+source.charAt(i);   
  198. }   
  199. System.out.println(temp);   
  200. }   
  201.   
  202. 15、Java編程,打印昨天的當前時刻   
  203. public class YesterdayCurrent{   
  204. public void main(String[] args){   
  205. Calendar cal = Calendar.getInstance();   
  206. cal.add(Calendar.DATE, -1);   
  207. System.out.println(cal.getTime());   
  208. }   
  209. }   
  210. 16、文件讀寫,實現一個計數器   
  211. public int getNum(){   
  212. int i = -1;   
  213. try{   
  214. String stri=”";   
  215. BufferedReader in = new BufferedReader(new FileReader(f));   
  216. while((stri=in.readLine())!=null){   
  217. i = Integer.parseInt(stri.trim());   
  218. }   
  219. in.close();   
  220. }catch(Exception e){   
  221. e.printStackTrace();   
  222. }   
  223. return i;   
  224. }   
  225. public void setNum(){   
  226. int i = getNum();   
  227. i++;   
  228. try{   
  229. PrintWriter out=new PrintWriter(new BufferedWriter(new FileWriter(f,false)));   
  230. out.write(String.valueOf(i)); //可能是編碼的原因,如果直接寫入int的話,將出現java編碼和windows編碼的混亂,因此此處寫入的是String   
  231. out.close() ;   
  232. }catch(Exception e){   
  233. e.printStackTrace();   
  234. }   
  235. }    
  236.   
  237. 17、指出下面程序的運行結果。   
  238. class A{   
  239. static{   
  240. System.out.print(“1″);   
  241. }   
  242. public A(){   
  243. System.out.print(“2″);   
  244. }   
  245. }   
  246. class B extends A{   
  247. static{   
  248. System.out.print(“a”);   
  249. }   
  250. public B(){   
  251. System.out.print(“b”);   
  252. }   
  253. }   
  254. public class Hello{   
  255. public static void main(String[] ars){   
  256. A ab = new B(); //執行到此處,結果: 1a2b   
  257. ab = new B(); //執行到此處,結果: 1a2b2b   
  258. }   
  259. }   
  260.   注:類的static 代碼段,可以看作是類首次加載(被虛擬機加載)執行的代碼,而對於類的加載,首先要執行其基類的構造,再執行其本身的構造   
  261. 18、抽象類和接口的區別?   
  262. (1)接口可以被多重implements,抽象類只能被單一extends  
  263. (2)接口只有定義,抽象類可以有定義和實現   
  264. (3)接口的字段定義默認爲:public static final, 抽象類字段默認是”friendly”(本包可見)   
  265. 當功能需要累積時用抽象類,不需要累積時用接口。   
  266. 19、什麼是類的返射機制?   
  267. 通過類(Class對象),可以得出當前類的fields、method、construtor、interface、superClass、modified等,同是可以通過類實例化一個實例、設置屬性、喚醒方法。Spring中一切都是返射、struts、hibernate都是通過類的返射進行開發的。   
  268. 20、類的返射機制中的包及核心類?   
  269.  java.lang.Class   
  270.  java.lang.refrection.Method   
  271.  java.lang.refrection.Field   
  272.  java.lang.refrection.Constructor   
  273.  java.lang.refrection.Modifier   
  274.  java.lang.refrection.Interface   
  275. 21、得到Class的三個過程是什麼?   
  276. 對象.getClass()   
  277. 類.class或Integer.type(int) Integer.class(java.lang.Integer)   
  278. Class.forName();   
  279. 22、如何喚起類中的一個方法?   
  280. 產生一個Class數組,說明方法的參數   
  281. 通過Class對象及方法參數得到Method   
  282. 通過method.invoke(實例,參數值數組)喚醒方法   
  283. 23、如何將數值型字符轉換爲數字(Integer,Double)?   
  284. Integer.parseInt(“1234”)   
  285. Double.parseDouble(“123.2”)   
  286. 24、如何將數字轉換爲字符?   
  287. 1+””   
  288. 1.0+””   
  289. 25、如何去小數點前兩位,並四捨五入。   
  290. double d=1256.22d;   
  291. d=d/100;   
  292. System.out.println(Math.round(d)*100);   
  293. 26、如何取得年月日,小時分秒?   
  294. Calendar c=Calendar.getInstance();   
  295. c.set(Calendar.YEAR,2004);   
  296. c.set(Calendar.MONTH,0);   
  297. c.set(Calendar.DAY_OF_MONTH,31);   
  298. System.out.println(c.get(Calendar.YEAR)+” “+(c.get(Calendar.MONTH)+1)+” “+c.get(Calendar.DAY_OF_MONTH));   
  299. 27、如何取得從1970年到現在的毫秒數   
  300. Java.util.Date dat=new Date();   
  301. long now=dat.getTime();   
  302. 28、如何獲取某個日期是當月的最後一天?   
  303. 當前日期加一天,若當前日期與結果的月份不相同,就是最後一天。   
  304.   
  305. 取下一個月的第一天,下一個月的第一天-1  
  306.   
  307. public static void main(String[] args)   
  308. {   
  309. Calendar c=Calendar.getInstance();   
  310. c.set(Calendar.YEAR,2004);   
  311. c.set(Calendar.MONTH,0);   
  312. c.set(Calendar.DAY_OF_MONTH,30);   
  313. Calendar c1=(Calendar)c.clone();   
  314. System.out.println(c.get(Calendar.YEAR)+” “+(c.get(Calendar.MONTH)+1)+” “+c.get(Calendar.DAY_OF_MONTH));   
  315.   
  316. c.add(Calendar.DAY_OF_MONTH,1);   
  317. if(c.get(Calendar.MONTH)!=c1.get(Calendar.MONTH))   
  318. {   
  319. System.out.println(“是最後一天”);   
  320. }   
  321. else  
  322. {   
  323. System.out.println(“不是取後一天”);   
  324.   
  325. }   
  326. }   
  327. 29、如何格式化日期?   
  328. Import java.text. SimpleDateFormat;   
  329. SimpleDateFormat sdf=new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”);   
  330. Date dat=new Date();   
  331. //把日期轉化爲字符串   
  332. String str=sdf.format(dat);   
  333. System.out.println(str);   
  334. //將字符串轉化爲日期   
  335. Java.util.Date d1=sdf.parse(“yyyy-mm-dd”);   
  336. 30、編碼轉換,怎樣實現將GB2312編碼的字符串轉換爲ISO-8859-1編碼的字符串。   
  337. String a=new String(“中”.getBytes(“gb2312″),”iso-8859-1″);   
  338.   
  339. String a=new String(“中”.getBytes(“iso-8859-1″));   
  340.   
  341. 32、String s = new String(“xyz”);創建了幾個String Object?   
  342. New了一個,”XYZ”本來又是一個   
  343. 兩個   
  344. 33floatfloat f=3.4是否正確?   
  345.  報錯,應當是float f=3.4f   
  346.  如果是float f=3(整數)正確   
  347. 35、說出一些常用的類,包,接口,請各舉5個   
  348. 常用的類:BufferedReader BufferedWriter FileReader FileWirter String Integer   
  349. 常用的包:java.lang java.awt java.io java.util java.sql javax.xml javax.sevlet javax.ejb. java.net javax.faces   
  350. 常用的接口: List Map Document NodeList EjbObject EjbHome SessionBean EntityBean   
  351. 36、java中會存在內存泄漏嗎,請簡單描述。   
  352. 會。如:int i,i2; return (i-i2); //when i爲足夠大的正數,i2爲足夠大的負數。結果會造成溢位,導致錯誤。   
  353. 37、java中實現多態的機制是什麼?   
  354. 靜態的多態:方法名相同,參數個數或類型不相同。(overloading)   
  355. 動態的多態:   
  356. 子類覆蓋父類的方法,將子類的實例傳與父類的引用調用的是子類的方法   
  357. 實現接口的實例傳與接口的引用調用的實現類的方法。   
  358. 38、垃圾回收器的基本原理是什麼?垃圾回收器可以馬上回收內存嗎?有什麼辦法主動通知虛擬機進行垃圾回收?  
Java面試題整理
Java面向對象
1. super()與this()的區別?
This():當前類的對象,super父類對象。
Super():在子類訪問父類的成員和行爲,必須受類繼承規則的約束
而this他代表當前對象,當然所有的資源都可以訪問.
在構造函數中,如果第一行沒有寫super(),編譯器會自動插入.但是如果父類沒有不帶參數的構造函數,或這個函數被私有化了(用private修飾).此時你必須加入對父類的實例化構造.而this就沒有這個要求,因爲它本身就進行實例化的構造.
而在方法中super和this使用的方法就差不多了.只不過super 要考慮是否能訪問其父類的資源.

2. 作用域public,protected,private,以及不寫時的區別?
 Public:不同包、同一包、類內都可用
 Private:類內
 Protected: 不同包的子類、同一包、類內都可用
 不寫時:同一包內、類內

3. 編程輸出如下圖形。
* * * * *
* * * *
* * *
* *
*
代碼如下:
public class Print {
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
for (int j = 5; j > i; j–) {
System.out.print(“*”);
}
System.out.println();
}
}
}
4. JAVA的事件委託機制和垃圾回收機制
java 事件委託機制的概念,一個源產生一個事件並將它送到一個或多個監聽器那裏。在這種方案中,監聽器簡單的等待,直到它收到一個事件。一旦事件被接受,監聽器將處理這個事件,然後返回。
垃圾回收機制 垃圾收集是將分配給對象但不再使用的內存回收或釋放的過程。如果一個對象沒有指向它的引用或者其賦值爲null,則次對象適合進行垃圾回收

5. 在JAVA中,如何跳出當前的多重嵌套循環?
用break; return 方法。
6. 什麼是java序列化,如何實現java序列化?(寫一個實例)
序列化:
處理對象流的機制,所謂對象流也就是將對象的內容進行流化。可以對流化後的對象進行讀寫操作,也可將流化後的對象傳輸於網絡之間。序列化是爲了解決在對對象流進行讀寫操作時所引發的問題。
序列化的實現:
將需要被序列化的類實現Serializable接口,該接口沒有需要實現的方法,implements Serializable只是爲了標註該對象是可被序列化的,然後使用一個輸出流(如:FileOutputStream)來構造一個ObjectOutputStream(對象流)對象,接着,使用ObjectOutputStream對象的writeObject(Object obj)方法就可以將參數爲obj的對象寫出(即保存其狀態),要恢復的話則用輸入流。

7. 一個”.java”源文件中是否可以包括多個類(不是內部類)?有什麼限制?
可以。如果這個類的修飾符是public,其類名與文件名必須相同。
8. 排序都有哪幾種方法?請列舉。用JAVA實現一個快速排序?
排序的方法有:插入排序(直接插入排序、希爾排序),交換排序(冒泡排序、快速排序),選擇排序(直接選擇排序、堆排序),歸併排序,分配排序(箱排序、基數排序)
快速排序的僞代碼。
9. Overload和Override的區別。Overloaded的方法是否可以改變返回值的類型?
方法的
重寫Override,子類覆蓋父類的方法,將子類傳與父類的引用調用的還是子類的方法。
重載Overloading 一個類多個方法,名稱相同,參數個數類型不同。
兩者都是Java多態性的不同表現。
Overloaded的方法是可以改變返回值的類型。

1, public class Ctest()
{
Public static void main()
{
System.out.prinln(8+8+”88”+8+8);
}
}

168888
10. Final類有什麼特點?
屬性常量
方法不可以overridding
類不可以繼承
11. 繼承時候類的執行順序問題,一般都是選擇題,問你將會打印出什麼?
答:父類:
package test;
public class FatherClass
{
public FatherClass()
{
System.out.println(“FatherClass Create”);
}
}
子類:
package test;
import test.FatherClass;
public class ChildClass extends FatherClass
{
public ChildClass()
{
System.out.println(“ChildClass Create”);
}
public static void main(String[] args)
{
FatherClass fc = new FatherClass();
ChildClass cc = new ChildClass();
}
}
輸出結果:
C:>java test.ChildClass
FatherClass Create
FatherClass Create
ChildClass Create
12. 內部類的實現方式?
答:示例代碼如下:
package test;
public class OuterClass
{
private class InterClass
{
Public Interlass()
{
System.out.println(“InterClass Create”);
}
}
public OuterClass()
{
InterClass ic = new InterClass();
System.out.println(“OuterClass Create”);
}
public static void main(String[] args)
{
OuterClass oc = new OuterClass();
}
}
輸出結果:
C:>java test/OuterClass
InterClass Create
OuterClass Create
13. 用JAVA實現一種排序,JAVA類實現序列化的方法(二種)?
14. 如在COLLECTION框架中,實現比較要實現什麼樣的接口?
15. 用插入法進行排序代碼如下
package test;
import java.util.*;
class InsertSort
{
ArrayList al;
public InsertSort(int num,int mod)
{
al = new ArrayList(num);
Random rand = new Random();
System.out.println(“The ArrayList Sort Before:”);
for (int i=0;i {
al.add(new Integer(Math.abs(rand.nextInt()) % mod + 1));
System.out.println("al["+i+"]="+al.get(i));
}
}
public void SortIt()
{
Integer tempInt;
int MaxSize=1;
for(int i=1;i {
tempInt = (Integer)al.remove(i);
if(tempInt.intValue()>=((Integer)al.get(MaxSize-1)).intValue())
{
al.add(MaxSize,tempInt);
MaxSize++;
System.out.println(al.toString());
} else {
for (int j=0;j {
if 

(((Integer)al.get(j)).intValue()>=tempInt.intValue())
{
al.add(j,tempInt);
MaxSize++;
System.out.println(al.toString());
break;
}
}
}
}
System.out.println(“The ArrayList Sort After:”);
for(int i=0;i {
System.out.println("al["+i+"]="+al.get(i));
}
}
public static void main(String[] args)
{
InsertSort is = new InsertSort(10,100);
is.SortIt();
}
} 

JAVA類實現序例化的方法是實現java.io.Serializable接口
Collection框架中實現比較要實現Comparable 接口和 Comparator 接口

16. 編程:編寫一個截取字符串的函數,輸入爲一個字符串和字節數,輸出爲按字節截取的字符串。 但是要保證漢字不被截半個,如"我ABC"4,應該截爲"我AB",輸入"我ABC漢DEF",6,應該輸出爲"我ABC"而不是"我ABC+漢的半個"。
答:代碼如下:
public static void split(String source,int num) throws Exception
{
int k=0;
String temp="";
for (int i = 0; i {
byte[] b=(source.charAt(i)+"").getBytes();
k=k+b.length;
if(k>num)
{
break;
}
temp=temp+source.charAt(i);
}
System.out.println(temp);
}

15、Java編程,打印昨天的當前時刻
public class YesterdayCurrent{
public void main(String[] args){
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -1);
System.out.println(cal.getTime());
}
}
16、文件讀寫,實現一個計數器
public int getNum(){
int i = -1;
try{
String stri=”";
BufferedReader in = new BufferedReader(new FileReader(f));
while((stri=in.readLine())!=null){
i = Integer.parseInt(stri.trim());
}
in.close();
}catch(Exception e){
e.printStackTrace();
}
return i;
}
public void setNum(){
int i = getNum();
i++;
try{
PrintWriter out=new PrintWriter(new BufferedWriter(new FileWriter(f,false)));
out.write(String.valueOf(i)); //可能是編碼的原因,如果直接寫入int的話,將出現java編碼和windows編碼的混亂,因此此處寫入的是String
out.close() ;
}catch(Exception e){
e.printStackTrace();
}
} 

17、指出下面程序的運行結果。
class A{
static{
System.out.print(“1″);
}
public A(){
System.out.print(“2″);
}
}
class B extends A{
static{
System.out.print(“a”);
}
public B(){
System.out.print(“b”);
}
}
public class Hello{
public static void main(String[] ars){
A ab = new B(); //執行到此處,結果: 1a2b
ab = new B(); //執行到此處,結果: 1a2b2b
}
}
  注:類的static 代碼段,可以看作是類首次加載(被虛擬機加載)執行的代碼,而對於類的加載,首先要執行其基類的構造,再執行其本身的構造
18、抽象類和接口的區別?
(1)接口可以被多重implements,抽象類只能被單一extends
(2)接口只有定義,抽象類可以有定義和實現
(3)接口的字段定義默認爲:public static final, 抽象類字段默認是”friendly”(本包可見)
當功能需要累積時用抽象類,不需要累積時用接口。
19、什麼是類的返射機制?
通過類(Class對象),可以得出當前類的fields、method、construtor、interface、superClass、modified等,同是可以通過類實例化一個實例、設置屬性、喚醒方法。Spring中一切都是返射、struts、hibernate都是通過類的返射進行開發的。
20、類的返射機制中的包及核心類?
 java.lang.Class
 java.lang.refrection.Method
 java.lang.refrection.Field
 java.lang.refrection.Constructor
 java.lang.refrection.Modifier
 java.lang.refrection.Interface
21、得到Class的三個過程是什麼?
對象.getClass()
類.class或Integer.type(int) Integer.class(java.lang.Integer)
Class.forName();
22、如何喚起類中的一個方法?
產生一個Class數組,說明方法的參數
通過Class對象及方法參數得到Method
通過method.invoke(實例,參數值數組)喚醒方法
23、如何將數值型字符轉換爲數字(Integer,Double)?
Integer.parseInt(“1234”)
Double.parseDouble(“123.2”)
24、如何將數字轉換爲字符?
1+””
1.0+””
25、如何去小數點前兩位,並四捨五入。
double d=1256.22d;
d=d/100;
System.out.println(Math.round(d)*100);
26、如何取得年月日,小時分秒?
Calendar c=Calendar.getInstance();
c.set(Calendar.YEAR,2004);
c.set(Calendar.MONTH,0);
c.set(Calendar.DAY_OF_MONTH,31);
System.out.println(c.get(Calendar.YEAR)+” “+(c.get(Calendar.MONTH)+1)+” “+c.get(Calendar.DAY_OF_MONTH));
27、如何取得從1970年到現在的毫秒數
Java.util.Date dat=new Date();
long now=dat.getTime();
28、如何獲取某個日期是當月的最後一天?
當前日期加一天,若當前日期與結果的月份不相同,就是最後一天。

取下一個月的第一天,下一個月的第一天-1

public static void main(String[] args)
{
Calendar c=Calendar.getInstance();
c.set(Calendar.YEAR,2004);
c.set(Calendar.MONTH,0);
c.set(Calendar.DAY_OF_MONTH,30);
Calendar c1=(Calendar)c.clone();
System.out.println(c.get(Calendar.YEAR)+” “+(c.get(Calendar.MONTH)+1)+” “+c.get(Calendar.DAY_OF_MONTH));

c.add(Calendar.DAY_OF_MONTH,1);
if(c.get(Calendar.MONTH)!=c1.get(Calendar.MONTH))
{
System.out.println(“是最後一天”);
}
else
{
System.out.println(“不是取後一天”);

}
}
29、如何格式化日期?
Import java.text. SimpleDateFormat;
SimpleDateFormat sdf=new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”);
Date dat=new Date();
//把日期轉化爲字符串
String str=sdf.format(dat);
System.out.println(str);
//將字符串轉化爲日期
Java.util.Date d1=sdf.parse(“yyyy-mm-dd”);
30、編碼轉換,怎樣實現將GB2312編碼的字符串轉換爲ISO-8859-1編碼的字符串。
String a=new String(“中”.getBytes(“gb2312″),”iso-8859-1″);

String a=new String(“中”.getBytes(“iso-8859-1″));

32、String s = new String(“xyz”);創建了幾個String Object?
New了一個,”XYZ”本來又是一個
兩個
33、float型float f=3.4是否正確?
 報錯,應當是float f=3.4f
 如果是float f=3(整數)正確
35、說出一些常用的類,包,接口,請各舉5個
常用的類:BufferedReader BufferedWriter FileReader FileWirter String Integer
常用的包:java.lang java.awt java.io java.util java.sql javax.xml javax.sevlet javax.ejb. java.net javax.faces
常用的接口: List Map Document NodeList EjbObject EjbHome SessionBean EntityBean
36、java中會存在內存泄漏嗎,請簡單描述。
會。如:int i,i2; return (i-i2); //when i爲足夠大的正數,i2爲足夠大的負數。結果會造成溢位,導致錯誤。
37、java中實現多態的機制是什麼?
靜態的多態:方法名相同,參數個數或類型不相同。(overloading)
動態的多態:
子類覆蓋父類的方法,將子類的實例傳與父類的引用調用的是子類的方法
實現接口的實例傳與接口的引用調用的實現類的方法。
38、垃圾回收器的基本原理是什麼?垃圾回收器可以馬上回收內存嗎?有什麼辦法主動通知虛擬機進行垃圾回收?
Java代碼 複製代碼 收藏代碼
  1. 當程序員創建對象的時候,gc就開始監控這些思想的地址,大小,以及使用情況,通常,gc採用有向圖的方式,對堆(heak)中  
當程序員創建對象的時候,gc就開始監控這些思想的地址,大小,以及使用情況,通常,gc採用有向圖的方式,對堆(heak)中
Java代碼 複製代碼 收藏代碼
  1. 的所有對象進行管理。通過這種方式確定哪些對象是不可達的,哪些對象是可達的,當gc確定一些對象是不可達的時,gc就有責任回收這些內存空間。  
的所有對象進行管理。通過這種方式確定哪些對象是不可達的,哪些對象是可達的,當gc確定一些對象是不可達的時,gc就有責任回收這些內存空間。
Java代碼 複製代碼 收藏代碼
  1. 可以馬上回收內存。程序員可以手動執行system.gc或者Runtime.getRuntime().gc(),通知gc運行,但是java語言規範並不保證gc一定會執行  
可以馬上回收內存。程序員可以手動執行system.gc或者Runtime.getRuntime().gc(),通知gc運行,但是java語言規範並不保證gc一定會執行
Java代碼 複製代碼 收藏代碼
  1. 39、靜態變量和實例變量的區別?   
  2. static i = 10//常量   
  3. class A a; a.i =10;//可變   
  4. <SPAN class=Apple-style-span><SPAN class=Apple-style-span><PRE class="reply-text mb10">類變量和實例變量的區別在於:類變量是所有對象共有,其中一個對象將它值改變,其他對象得到的就是改變後的結果;而實例變量則屬對象私有,某一個對象將其值改變,不影響其他對象</PRE>   
  5. </SPAN></SPAN>41、是否可以從一個static方法內部發出對非static方法的調用?   
  6. 不可以,如果其中包含對象的method();不能保證對象初始化.   
  7. 42、寫clone()方法時,通常都有一行代碼,是什麼?   
  8. Clone 有缺省行爲,super.clone();他負責產生正確大小的空間,並逐位複製。   
  9. 43、JAVA語言如何進行異常處理,關鍵字:throws,throw,try,catch,finally分別代表什麼意義?在try塊中可以拋出異常嗎?   
  10. Try:執行部分,產生異常   
  11. Catch:捕捉異常   
  12. Finally:不管有沒有異常都執行   
  13. Throws:在方法聲明處聲明要拋出的異常,調用者必須對其進行處理。   
  14. Throw:拋出一個異常   
  15.   
  16. try中可以拋出異常,一般與聲明的異常相同。   
  17.   
  18. 自定義異常要繼承於Exception或Exception的子類   
  19. 45、冒泡排序法   
  20. //相鄰兩個數比較,將最小或最大的放到後面,最後面數的不參與比較   
  21. public class BubbleSort {   
  22. private static int al[] = new int[10];   
  23. public BubbleSort() {   
  24. al[0]=2;   
  25. al[1]=3;   
  26. al[2]=23;   
  27. al[3]=45;   
  28. al[4]=1;   
  29. al[5]=67;   
  30. al[6]=23;   
  31. al[7]=80;   
  32. al[8]=35;   
  33. al[9]=72;   
  34. }   
  35. public static void main(String[] args) {   
  36. BubbleSort bs = new BubbleSort();   
  37. System.out.println(“排序前:”);   
  38. display(al);   
  39.   
  40. for(int i=0;i    
  41.   
  42. for (int j = 0; j < al.length-i-1; j++) {   
  43.   
  44. if(al[j]>al[j+1]) {   
  45. swap(j,j+1);   
  46. }   
  47. }   
  48. }   
  49. System.out.println();   
  50. System.out.println(“排序後:”);   
  51. display(al);   
  52. }   
  53. private static void display(int[] al2) {   
  54. for (int i = 0; i < al2.length; i++) {   
  55. System.out.print(al2[i]+" ");   
  56. }   
  57. }   
  58. private static void swap(int i, int j) {   
  59. int temp = al[i];   
  60. al[i]= al[j];   
  61. al[j] = temp;   
  62. }   
  63. }   
  64. 46、String and StringBuffer的區別?   
  65. String:長度給定不可變,當多個字符串聯合時要先轉爲StringBuffer,再聯合,速度慢。   
  66. StringBuffer:長度可變,可以將多個字符串值直接聯合,效率高   
  67. 47、用java代碼編寫堆棧   
  68. public class Stack {   
  69.   
  70. int[] data;   
  71. int maxSize;   
  72. int top;   
  73. public Stack(int maxSize) {   
  74. this.maxSize = maxSize;   
  75. data = new int[maxSize];   
  76. top = -1;   
  77. }   
  78.   
  79. /**  
  80. * 依次加入數據  
  81. * @param data 要加入的數據  
  82. * @return 添加是否成功  
  83. */  
  84. public boolean push(int data) {   
  85. if(top+1== maxSize) {   
  86. System.out.println("棧已滿!");   
  87. return false;   
  88. }   
  89. this.data[++top] = data;   
  90. return true;   
  91. }   
  92.   
  93. /**  
  94. * 從棧中取出數據  
  95. * @return 取出的數據  
  96. */  
  97. public int pop() throws Exception{   
  98. if(top==-1) {   
  99. throw new Exception("棧已空!");   
  100. }   
  101. return this.data[top--];   
  102. }   
  103.   
  104. public static void main(String[] args) throws Exception {   
  105. Stack stack=new Stack(1000);   
  106. stack.push(1);   
  107. stack.push(2);   
  108. stack.push(3);   
  109. stack.push(4);   
  110. stack.push(5);   
  111. while(stack.top>=0)   
  112. {   
  113. System.out.println(stack.pop());   
  114. }   
  115. }   
  116. }   
  117. 48、集合的作用是什麼?   
  118. 數據的傳送 增、刪、改、查、constainsAll,可以存放不同類型的對象。   
  119. 49、集合的通用方法有那些?通用方法是什麼?(操作)   
  120. 集合List 的遍歷方法有:   
  121. Iterator:   
  122. Enumeration   
  123. For   
  124. Get   
  125. set   
  126. Collection的通用方法有:   
  127. Iterator()   
  128. Add()   
  129. Clear();   
  130. remove()   
  131.   
  132. 50、說出ArrayList,Vector, LinkedList的存儲性能和特性HashMap和Hashtable的區別   
  133. ArrayList Vector:以數組的方式存儲,增、刪慢,查、改快   
  134. ArrayList:線程不安全,速度快   
  135. Vector:線程安全,速度慢(synchoronized)   
  136. LikedList: 以單鏈表的方式存儲,增、刪快,查、改慢   
  137.   
  138. HashMap與Hashtable都實現的Map接口,HashTable線程安全,HashMap線程不安全。   
  139. 51、Collection 和 Collections的區別。  
39、靜態變量和實例變量的區別?
static i = 10; //常量
class A a; a.i =10;//可變
類變量和實例變量的區別在於:類變量是所有對象共有,其中一個對象將它值改變,其他對象得到的就是改變後的結果;而實例變量則屬對象私有,某一個對象將其值改變,不影響其他對象
41、是否可以從一個static方法內部發出對非static方法的調用?不可以,如果其中包含對象的method();不能保證對象初始化.42、寫clone()方法時,通常都有一行代碼,是什麼?Clone 有缺省行爲,super.clone();他負責產生正確大小的空間,並逐位複製。43、JAVA語言如何進行異常處理,關鍵字:throws,throw,try,catch,finally分別代表什麼意義?在try塊中可以拋出異常嗎?Try:執行部分,產生異常Catch:捕捉異常Finally:不管有沒有異常都執行Throws:在方法聲明處聲明要拋出的異常,調用者必須對其進行處理。Throw:拋出一個異常在try中可以拋出異常,一般與聲明的異常相同。自定義異常要繼承於Exception或Exception的子類45、冒泡排序法//相鄰兩個數比較,將最小或最大的放到後面,最後面數的不參與比較public class BubbleSort {private static int al[] = new int[10];public BubbleSort() {al[0]=2;al[1]=3;al[2]=23;al[3]=45;al[4]=1;al[5]=67;al[6]=23;al[7]=80;al[8]=35;al[9]=72;}public static void main(String[] args) {BubbleSort bs = new BubbleSort();System.out.println(“排序前:”);display(al);for(int i=0;i for (int j = 0; j < al.length-i-1; j++) {if(al[j]>al[j+1]) {swap(j,j+1);}}}System.out.println();System.out.println(“排序後:”);display(al);}private static void display(int[] al2) {for (int i = 0; i < al2.length; i++) {System.out.print(al2[i]+" ");}}private static void swap(int i, int j) {int temp = al[i];al[i]= al[j];al[j] = temp;}}46、String and StringBuffer的區別?String:長度給定不可變,當多個字符串聯合時要先轉爲StringBuffer,再聯合,速度慢。StringBuffer:長度可變,可以將多個字符串值直接聯合,效率高47、用java代碼編寫堆棧public class Stack {int[] data;int maxSize;int top;public Stack(int maxSize) {this.maxSize = maxSize;data = new int[maxSize];top = -1;}/*** 依次加入數據* @param data 要加入的數據* @return 添加是否成功*/public boolean push(int data) {if(top+1== maxSize) {System.out.println("棧已滿!");return false;}this.data[++top] = data;return true;}/*** 從棧中取出數據* @return 取出的數據*/public int pop() throws Exception{if(top==-1) {throw new Exception("棧已空!");}return this.data[top--];}public static void main(String[] args) throws Exception {Stack stack=new Stack(1000);stack.push(1);stack.push(2);stack.push(3);stack.push(4);stack.push(5);while(stack.top>=0){System.out.println(stack.pop());}}}48、集合的作用是什麼?數據的傳送 增、刪、改、查、constainsAll,可以存放不同類型的對象。49、集合的通用方法有那些?通用方法是什麼?(操作)集合List 的遍歷方法有:Iterator:EnumerationForGetsetCollection的通用方法有:Iterator()Add()Clear();remove()50、說出ArrayList,Vector, LinkedList的存儲性能和特性HashMap和Hashtable的區別ArrayList Vector:以數組的方式存儲,增、刪慢,查、改快ArrayList:線程不安全,速度快Vector:線程安全,速度慢(synchoronized)LikedList: 以單鏈表的方式存儲,增、刪快,查、改慢HashMap與Hashtable都實現的Map接口,HashTable線程安全,HashMap線程不安全。51、Collection 和 Collections的區別。
Java代碼 複製代碼 收藏代碼
  1. <SPAN class=Apple-style-span><SPAN style="TEXT-ALIGN: justify; LINE-HEIGHT: 25px; FONT-FAMILY: Arial; COLOR: #635a19; FONT-SIZE: 12px" class=Apple-style-span>Collection是集合類的上級接口,繼承與他的接口主要有Set 和List.<BR style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">Collections是針對集合類的一個幫助類,他提供一系列靜態方法實現對各種集合的搜索、排序、線程安全化等操作。</SPAN></SPAN>  
Collection是集合類的上級接口,繼承與他的接口主要有Set 和List.
Collections是針對集合類的一個幫助類,他提供一系列靜態方法實現對各種集合的搜索、排序、線程安全化等操作。
Java代碼 複製代碼 收藏代碼
  1. 52、Set裏的元素是不能重複的,那麼用什麼方法來區分重複與否呢? 是用==還是equals()? 它們有何區別?用contains來區分是否有重複的對象。還是都不用。   
  2.   
  3. 在比較時先調用hashCode方法,如果不相同,證明不相等。   
  4. 如果相同,再調用equals方法,如果equals方法相同,證明相等,不相同,證明不相等。   
  5.   
  6. ==:主要用在基本數據類型及引用   
  7. Equals:主要是對象或對象引用的比較。   
  8.   
  9. 集合中是否包含某一個元素用contains來判斷。  
52、Set裏的元素是不能重複的,那麼用什麼方法來區分重複與否呢? 是用==還是equals()? 它們有何區別?用contains來區分是否有重複的對象。還是都不用。

在比較時先調用hashCode方法,如果不相同,證明不相等。
如果相同,再調用equals方法,如果equals方法相同,證明相等,不相同,證明不相等。

==:主要用在基本數據類型及引用
Equals:主要是對象或對象引用的比較。

集合中是否包含某一個元素用contains來判斷。
Java代碼 複製代碼 收藏代碼
  1. 53、List, Set, Map是否繼承自Collection接口?   
  2. List,set繼承於Collection   
  3. Map沒有繼承於Collection,其相對是獨立的。   
  4. 屬於Collection類型的對象,可以通過構造函數將一個集合構造成另外一個集合。  
53、List, Set, Map是否繼承自Collection接口?
List,set繼承於Collection
Map沒有繼承於Collection,其相對是獨立的。
屬於Collection類型的對象,可以通過構造函數將一個集合構造成另外一個集合。
Java代碼 複製代碼 收藏代碼
  1. 54、面向對象的特徵有哪些方面   
  2. 1.抽象:   
  3. 找共性,將共有的屬性、方法放到父類中   
  4. 2.繼承:   
  5. 子類繼承於父類,具有父類的所有屬性與方法,可以重用,也可以覆蓋。   
  6. 3.封裝:   
  7. 一個類包括多個屬性及方法。   
  8. 4. 多態性:   
  9. 動態:   
  10. 靜態:   
  11. 55、String是最基本的數據類型嗎?   
  12. 基本數據類型包括byteintcharlongfloatdoublebooleanshort。   
  13.   
  14. java.lang.String類是final類型的,因此不可以繼承這個類、不能修改這個類。爲了提高效率節省空間,我們應該用StringBuffer類  
54、面向對象的特徵有哪些方面
1.抽象:
找共性,將共有的屬性、方法放到父類中
2.繼承:
子類繼承於父類,具有父類的所有屬性與方法,可以重用,也可以覆蓋。
3.封裝:
一個類包括多個屬性及方法。
4. 多態性:
動態:
靜態:
55、String是最基本的數據類型嗎?
基本數據類型包括byte、int、char、long、float、double、boolean和short。

java.lang.String類是final類型的,因此不可以繼承這個類、不能修改這個類。爲了提高效率節省空間,我們應該用StringBuffer類
Java代碼 複製代碼 收藏代碼
  1. 56int 和 Integer 有什麼區別?   
  2. Int是基本數據類型,不是對象,佔一個內存空間,沒有方法。與其同類的有long,char,doble   
  3. Integer是封裝類,具有方法及屬性。與其同類的有Long,Double.Float  
56、int 和 Integer 有什麼區別?
Int是基本數據類型,不是對象,佔一個內存空間,沒有方法。與其同類的有long,char,doble
Integer是封裝類,具有方法及屬性。與其同類的有Long,Double.Float
Java代碼 複製代碼 收藏代碼
  1. 57、運行時異常與一般異常有何異同?   
  2. 運行時異常:java JVM拋出的異常,代碼中不用處理。   
  3.   
  4. 一般異常:用戶拋出的異常,如果用throws 聲明瞭,調用這個方法的代碼必須對其處理。  
57、運行時異常與一般異常有何異同?
運行時異常:java JVM拋出的異常,代碼中不用處理。

一般異常:用戶拋出的異常,如果用throws 聲明瞭,調用這個方法的代碼必須對其處理。
Java代碼 複製代碼 收藏代碼
  1. 58、&和&&的區別?   
  2. &:與: 左邊若爲false右邊還執行。   
  3. &&:短路與,左邊若爲false右邊不執行。  
58、&和&&的區別?
&:與: 左邊若爲false右邊還執行。
&&:短路與,左邊若爲false右邊不執行。
Java代碼 複製代碼 收藏代碼
  1. 59finalfinally, finalize的區別?   
  2. final 用於聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。   
  3. finally是異常處理語句結構的一部分,表示總是執行。   
  4. finalize是Object類的一個方法,在垃圾收集器執行的時候會調用被回收對象的此方法,可以覆蓋此方法提供垃圾收集時的其他資源回收,例如關閉文件等。   
  5. 算符可以用來決定某對象的類是否實現了接口  
59、final, finally, finalize的區別?
final 用於聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。
finally是異常處理語句結構的一部分,表示總是執行。
finalize是Object類的一個方法,在垃圾收集器執行的時候會調用被回收對象的此方法,可以覆蓋此方法提供垃圾收集時的其他資源回收,例如關閉文件等。
算符可以用來決定某對象的類是否實現了接口
Java代碼 複製代碼 收藏代碼
  1. 。   
  2. 62、heap和stack有什麼區別?   
  3. 棧是一種線形集合,其添加和刪除元素的操作應在同一段完成。棧按照後進先出的方式進行處理。   
  4. 堆是棧的一個組成元素  
。
62、heap和stack有什麼區別?
棧是一種線形集合,其添加和刪除元素的操作應在同一段完成。棧按照後進先出的方式進行處理。
堆是棧的一個組成元素
Java代碼 複製代碼 收藏代碼
  1. 63、Static Nested Class 和 Inner Class的不同?   
  2. Static Nested Class是被聲明爲靜態(static)的內部類,它可以不依賴於外部類實例被實例化。而通常的內部類需要在外部類實例化後才能實例化。  
63、Static Nested Class 和 Inner Class的不同?
Static Nested Class是被聲明爲靜態(static)的內部類,它可以不依賴於外部類實例被實例化。而通常的內部類需要在外部類實例化後才能實例化。
Java代碼 複製代碼 收藏代碼
  1. 64、什麼時候用assert?   
  2. assertion (斷言)在軟件開發中是一種常用的調試方式,很多開發語言中都支持這種機制。在實現中,assertion就是在程序中的一條語句,它對一個 boolean表達式進行檢查,一個正確程序必須保證這個boolean表達式的值爲true;如果該值爲false,說明程序已經處於不正確的狀態下,系統將給出警告或退出。一般來說,assertion用於保證程序最基本、關鍵的正確性。assertion檢查通常在開發和測試時開啓。爲了提高性能,在軟件發佈後,assertion檢查通常是關閉的。   
  3. 65、GC是什麼? 爲什麼要有GC?   
  4. GC是垃圾收集的意思(Gabage Collection),內存處理是編程人員容易出現問題的地方,忘記或者錯誤的內存回收會導致程序或系統的不穩定甚至崩潰,Java提供的GC功能可以自動監測對象是否超過作用域從而達到自動回收內存的目的,Java語言沒有提供釋放已分配內存的顯示操作方法。   
  5. 66short s1 = 1; s1 = s1 + 1;有什麼錯? short s1 = 1; s1 += 1;有什麼錯?   
  6. short s1 = 1; s1 = s1 + 1; (s1+1運算結果是int型,需要強制轉換類型) short s1 = 1; s1 += 1;(可以正確編譯)   
  7. 67、Math.round(11.5)等於多少? Math.round(-11.5)等於多少?   
  8. Math.round(11.5)==12 Math.round(-11.5)==-11 round方法返回與參數最接近的長整數,參數加1/2後求其floor.   
  9.   
  10. 68、Java有沒有goto?   
  11. java中的保留字,現在沒有在java中使用。  
64、什麼時候用assert?
assertion (斷言)在軟件開發中是一種常用的調試方式,很多開發語言中都支持這種機制。在實現中,assertion就是在程序中的一條語句,它對一個 boolean表達式進行檢查,一個正確程序必須保證這個boolean表達式的值爲true;如果該值爲false,說明程序已經處於不正確的狀態下,系統將給出警告或退出。一般來說,assertion用於保證程序最基本、關鍵的正確性。assertion檢查通常在開發和測試時開啓。爲了提高性能,在軟件發佈後,assertion檢查通常是關閉的。
65、GC是什麼? 爲什麼要有GC?
GC是垃圾收集的意思(Gabage Collection),內存處理是編程人員容易出現問題的地方,忘記或者錯誤的內存回收會導致程序或系統的不穩定甚至崩潰,Java提供的GC功能可以自動監測對象是否超過作用域從而達到自動回收內存的目的,Java語言沒有提供釋放已分配內存的顯示操作方法。
66、short s1 = 1; s1 = s1 + 1;有什麼錯? short s1 = 1; s1 += 1;有什麼錯?
short s1 = 1; s1 = s1 + 1; (s1+1運算結果是int型,需要強制轉換類型) short s1 = 1; s1 += 1;(可以正確編譯)
67、Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Math.round(11.5)==12 Math.round(-11.5)==-11 round方法返回與參數最接近的長整數,參數加1/2後求其floor.

68、Java有沒有goto?
java中的保留字,現在沒有在java中使用。
Java代碼 複製代碼 收藏代碼
  1. 69、給我一個你最常見到的runtime exception   
  2. ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException   
  3.   
  4. 一般異常:   
  5. IOException   
  6. FileNotFoundException   
  7. SqlException  
69、給我一個你最常見到的runtime exception
ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException

一般異常:
IOException
FileNotFoundException
SqlException
Java代碼 複製代碼 收藏代碼
  1. 70、接口是否可繼承接口? 抽象類是否可實現(implements)接口? 抽象類是否可繼承實體類(concrete class)?   
  2. 接口可以繼承接口。抽象類可以實現(implements)接口,抽象類是否可繼承實體類,但前提是實體類必須有明確的構造函數。任何抽象類都是實際類Object的子類。  
70、接口是否可繼承接口? 抽象類是否可實現(implements)接口? 抽象類是否可繼承實體類(concrete class)?
接口可以繼承接口。抽象類可以實現(implements)接口,抽象類是否可繼承實體類,但前提是實體類必須有明確的構造函數。任何抽象類都是實際類Object的子類。
Java代碼 複製代碼 收藏代碼
  1. 71abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized?   
  2. 都不能  
71、abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized?
都不能
Java代碼 複製代碼 收藏代碼
  1. 72、數組有沒有length()這個方法? String有沒有length()這個方法?   
  2. 數組沒有length()這個方法,有length這個屬性   
  3. String有length()這個方法.  
72、數組有沒有length()這個方法? String有沒有length()這個方法?
數組沒有length()這個方法,有length這個屬性
String有length()這個方法.
Java代碼 複製代碼 收藏代碼
  1. 73、構造器Constructor是否可被override?   
  2. 構造器Constructor不能被繼承,因此不能重寫Overriding,但可以被重載Overloading。  
73、構造器Constructor是否可被override?
構造器Constructor不能被繼承,因此不能重寫Overriding,但可以被重載Overloading。
Java代碼 複製代碼 收藏代碼
  1. 74、是否可以繼承String類?   
  2. String類是final類故不可以繼承。  
74、是否可以繼承String類?
String類是final類故不可以繼承。
Java代碼 複製代碼 收藏代碼
  1. 75、swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?   
  2. switch(expr1)中,expr1是一個整數表達式。因此傳遞給 switch 和 case 語句的參數應該是 int、 short、 char 或者 bytelong,string 都不能作用於swtich。  
75、swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
switch(expr1)中,expr1是一個整數表達式。因此傳遞給 switch 和 case 語句的參數應該是 int、 short、 char 或者 byte。long,string 都不能作用於swtich。
Java代碼 複製代碼 收藏代碼
  1. 76try {}裏有一個return語句,那麼緊跟在這個try後的finally {}裏的code會不會被執行,什麼時候被執行,在return前還是後?   
  2. 會執行,在return前執行。  
76、try {}裏有一個return語句,那麼緊跟在這個try後的finally {}裏的code會不會被執行,什麼時候被執行,在return前還是後?
會執行,在return前執行。
Java代碼 複製代碼 收藏代碼
  1. 77、編程題: 用最有效率的方法算出2乘以8等於幾?   
  2. 2 << 3  
77、編程題: 用最有效率的方法算出2乘以8等於幾?
2 << 3
Java代碼 複製代碼 收藏代碼
  1. 78、兩個對象值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對不對?   
  2. 對,有相同的hash code。  
78、兩個對象值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對不對?
對,有相同的hash code。
Java代碼 複製代碼 收藏代碼
  1. 79、當一個對象被當作參數傳遞到一個方法後,此方法可改變這個對象的屬性,並可返回變化後的結果,那麼這裏到底是值傳遞還是引用傳遞?   
  2. 是引用傳遞   
  3. 基本數據類型:值   
  4. 對象: 引用  
79、當一個對象被當作參數傳遞到一個方法後,此方法可改變這個對象的屬性,並可返回變化後的結果,那麼這裏到底是值傳遞還是引用傳遞?
是引用傳遞
基本數據類型:值
對象: 引用
Java代碼 複製代碼 收藏代碼
  1. 80、四種會話跟蹤技術   
  2. Cookie   
  3. Session   
  4. Hidden   
  5. url 重寫  
80、四種會話跟蹤技術
Cookie
Session
Hidden
url 重寫
Java代碼 複製代碼 收藏代碼
  1. 81、編程題: 寫一個Singleton出來。   
  2. Singleton模式主要作用是保證在Java應用程序中,一個類Class只有一個實例存在。   
  3. 一般Singleton模式通常有幾種種形式:   
  4. 第一種形式: 定義一個類,它的構造函數爲private的,它有一個staticprivate的該類變量,在類初始化時實例話,通過一個public的getInstance方法獲取對它的引用,繼而調用其中的方法。   
  5. public class Singleton {   
  6. private Singleton(){}   
  7.    //在自己內部定義自己一個實例,是不是很奇怪?   
  8.    //注意這是private 只供內部調用   
  9.    private static Singleton instance = new Singleton();   
  10.    //這裏提供了一個供外部訪問本class的靜態方法,可以直接訪問     
  11.    public static Singleton getInstance() {   
  12.      return instance;      
  13.    }   
  14. }   
  15. 第二種形式:   
  16. public class Singleton {   
  17.   private static Singleton instance = null;   
  18.   public static synchronized Singleton getInstance() {   
  19.   //這個方法比上面有所改進,不用每次都進行生成對象,只是第一次        
  20.   //使用時生成實例,提高了效率!   
  21.   if (instance==null)   
  22.     instance=new Singleton();   
  23. return instance;   }   
  24. }   
  25. 其他形式:   
  26. 定義一個類,它的構造函數爲private的,所有方法爲static的。   
  27. 一般認爲第一種形式要更加安全些  
81、編程題: 寫一個Singleton出來。
Singleton模式主要作用是保證在Java應用程序中,一個類Class只有一個實例存在。
一般Singleton模式通常有幾種種形式:
第一種形式: 定義一個類,它的構造函數爲private的,它有一個static的private的該類變量,在類初始化時實例話,通過一個public的getInstance方法獲取對它的引用,繼而調用其中的方法。
public class Singleton {
private Singleton(){}
   //在自己內部定義自己一個實例,是不是很奇怪?
   //注意這是private 只供內部調用
   private static Singleton instance = new Singleton();
   //這裏提供了一個供外部訪問本class的靜態方法,可以直接訪問  
   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;   }
}
其他形式:
定義一個類,它的構造函數爲private的,所有方法爲static的。
一般認爲第一種形式要更加安全些
Java代碼 複製代碼 收藏代碼
  1. 83、Java中的異常處理機制的簡單原理和應用。   
  2. 原理   
  3. 有錯直接轉到異常處理部分或向上拋出。   
  4. 應用:   
  5. JAVA的異常就是錯誤,有兩種一種是運行時,編碼可以不用捕捉。一種是一般異常,如果throws聲明瞭,必須進行處理。  
83、Java中的異常處理機制的簡單原理和應用。
原理
有錯直接轉到異常處理部分或向上拋出。
應用:
JAVA的異常就是錯誤,有兩種一種是運行時,編碼可以不用捕捉。一種是一般異常,如果throws聲明瞭,必須進行處理。
Java代碼 複製代碼 收藏代碼
  1. 84、垃圾回收的優點和原理。並考慮2種回收機制。   
  2. 優點:   
  3. 程序員不用管內存,jvm自動完成,開發方便。運行優先非常低,程序無法清楚實例什麼時候被消毀。  
84、垃圾回收的優點和原理。並考慮2種回收機制。
優點:
程序員不用管內存,jvm自動完成,開發方便。運行優先非常低,程序無法清楚實例什麼時候被消毀。
Java代碼 複製代碼 收藏代碼
  1. 85、描述一下JVM加載class文件的原理機制?   
  2. JVM中類的裝載是由ClassLoader和它的子類來實現的,Java ClassLoader 是一個重要的Java運行時系統組件。它負責在運行時查找和裝入類文件的類。  
85、描述一下JVM加載class文件的原理機制?
JVM中類的裝載是由ClassLoader和它的子類來實現的,Java ClassLoader 是一個重要的Java運行時系統組件。它負責在運行時查找和裝入類文件的類。
Java代碼 複製代碼 收藏代碼
  1. 86char型變量中能不能存貯一箇中文漢字?爲什麼?   
  2. 能夠定義成爲一箇中文的,因爲java中以unicode編碼,一個char16個字節,所以放一箇中文是沒問題的   
  3.   
  4. 88、寫一個程序,從文件(c:\test.txt)中查出字符串”mobnet”出現的次數?  
86、char型變量中能不能存貯一箇中文漢字?爲什麼?
能夠定義成爲一箇中文的,因爲java中以unicode編碼,一個char佔16個字節,所以放一箇中文是沒問題的

88、寫一個程序,從文件(c:\test.txt)中查出字符串”mobnet”出現的次數?
Java代碼 複製代碼 收藏代碼
  1. java基礎類庫(io流,集合類,線程,Socket,AWT,Swing,sql)   
  2. 1、java中有幾種類型的流?JDK爲每種類型的流提供了一些抽象類以供繼承,請說出他們分別是哪些類?   
  3. 字節流,字符流。字節流繼承於InputStream OutputStream,字符流繼承於Reader Writer。在java.io包中還有許多其他的流,低層流與調層流,高層流主要是爲了提高性能和使用方便。  
java基礎類庫(io流,集合類,線程,Socket,AWT,Swing,sql)
1、java中有幾種類型的流?JDK爲每種類型的流提供了一些抽象類以供繼承,請說出他們分別是哪些類?
字節流,字符流。字節流繼承於InputStream OutputStream,字符流繼承於Reader Writer。在java.io包中還有許多其他的流,低層流與調層流,高層流主要是爲了提高性能和使用方便。
Java代碼 複製代碼 收藏代碼
  1. 2、啓動一個線程是用run()還是start()?   
  2. 啓動一個線程是調用start()方法,啓動線程並調用run方法。  
2、啓動一個線程是用run()還是start()?
啓動一個線程是調用start()方法,啓動線程並調用run方法。
Java代碼 複製代碼 收藏代碼
  1. 3、線程的基本概念、線程的基本狀態以及狀態之間的關係   
  2. 線程是進程內的併發,沒有自已內存空間,共享進程的,線程間的通信成本較低。   
  3. Java中的線程有四種狀態分別是:運行、就緒、掛起、結束。  
3、線程的基本概念、線程的基本狀態以及狀態之間的關係
線程是進程內的併發,沒有自已內存空間,共享進程的,線程間的通信成本較低。
Java中的線程有四種狀態分別是:運行、就緒、掛起、結束。
Java代碼 複製代碼 收藏代碼
  1. 4、多線程有幾種實現方法,都是什麼?同步有幾種實現方法,都是什麼? 用什麼關鍵字修飾同步方法? stop()和suspend()方法爲何不推薦使用?   
  2. Extends Thread   
  3. Implements Runnable   
  4. 同步   
  5. Public synchronized aa()   
  6. {   
  7.   
  8. }   
  9.   
  10. Public void cc(object aa)   
  11. {   
  12. synchronized(aa)   
  13. {   
  14. }   
  15. }   
  16.   
  17. 用synchoronized修飾同步方法。   
  18.   
  19. 答:多線程有兩種實現方法,分別是繼承Thread類與實現Runnable接口   
  20. 同步的實現方面有兩種,分別是synchronized,wait與notify   
  21. 反對使用stop(),是因爲它不安全。它會解除由線程獲取的所有鎖定,而且如果對象處於一種不連貫狀態,那麼其他線程能在那種狀態下檢查和修改它們。結果很難檢查出真正的問題所在。suspend()方法容易發生死鎖。調用suspend()的時候,目標線程會停下來,但卻仍然持有在這之前獲得的鎖定。此時,其他任何線程都不能訪問鎖定的資源,除非被"掛起"的線程恢復運行。對任何線程來說,如果它們想恢復目標線程,同時又試圖使用任何一個鎖定的資源,就會造成死鎖。所以不應該使用suspend(),而應在自己的Thread類中置入一個標誌,指出線程應該活動還是掛起。若標誌指出線程應該掛起,便用wait()命其進入等待狀態。若標誌指出線程應當恢復,則用一個notify()重新啓動線程。  
4、多線程有幾種實現方法,都是什麼?同步有幾種實現方法,都是什麼? 用什麼關鍵字修飾同步方法? stop()和suspend()方法爲何不推薦使用?
Extends Thread
Implements Runnable
同步
Public synchronized aa()
{

}

Public void cc(object aa)
{
synchronized(aa)
{
}
}

用synchoronized修飾同步方法。

答:多線程有兩種實現方法,分別是繼承Thread類與實現Runnable接口
同步的實現方面有兩種,分別是synchronized,wait與notify
反對使用stop(),是因爲它不安全。它會解除由線程獲取的所有鎖定,而且如果對象處於一種不連貫狀態,那麼其他線程能在那種狀態下檢查和修改它們。結果很難檢查出真正的問題所在。suspend()方法容易發生死鎖。調用suspend()的時候,目標線程會停下來,但卻仍然持有在這之前獲得的鎖定。此時,其他任何線程都不能訪問鎖定的資源,除非被"掛起"的線程恢復運行。對任何線程來說,如果它們想恢復目標線程,同時又試圖使用任何一個鎖定的資源,就會造成死鎖。所以不應該使用suspend(),而應在自己的Thread類中置入一個標誌,指出線程應該活動還是掛起。若標誌指出線程應該掛起,便用wait()命其進入等待狀態。若標誌指出線程應當恢復,則用一個notify()重新啓動線程。
Java代碼 複製代碼 收藏代碼
  1. 5、集合框架有什麼?   
  2. Collection Map   
  3. List set HashMap   
  4. ArrayList linkedList HashSet TreeSet  
5、集合框架有什麼?
Collection Map
List set HashMap
ArrayList linkedList HashSet TreeSet
Java代碼 複製代碼 收藏代碼
  1. 12、設計4個線程,其中兩個線程每次對j增加1,另外兩個線程對j每次減少1。寫出程序   
  2.   
  3. public class TestThread   
  4. {   
  5. private int j;   
  6. public synchronized void inc()   
  7. {   
  8. j++;   
  9. System.out.println(Thread.currentThread().getName() + "-inc:" + j);   
  10. }   
  11. public synchronized void dec()   
  12. {   
  13. j--;   
  14. System.out.println(Thread.currentThread().getName() + "-dec:" + j);   
  15. }   
  16. public static void main(String[] args)   
  17. {   
  18. TestThread t=new TestThread();   
  19. for (int i = 0; i < 2; i++)   
  20. {   
  21. Thread inc=new Thread(new Inc(t));   
  22. Thread dec=new Thread(new Dec(t));   
  23. inc.start();   
  24. dec.start();   
  25. }   
  26. }   
  27. }   
  28.   
  29. class Inc implements Runnable   
  30. {   
  31. private TestThread obj;   
  32. public Inc(TestThread obj)   
  33. {   
  34. this.obj=obj;   
  35. }   
  36. public void run()   
  37. {   
  38. // for (int i = 0; i < 100; i++)   
  39. // {   
  40. this.obj.inc();   
  41. // }   
  42. }   
  43. }   
  44. class Dec implements Runnable   
  45. {   
  46. private TestThread obj;   
  47. public Dec(TestThread obj)   
  48. {   
  49. this.obj=obj;   
  50. }   
  51. public void run()   
  52. {   
  53. // for (int i = 0; i < 100; i++)   
  54. // {   
  55. this.obj.dec();   
  56. // }   
  57. }   
  58. }   
  59.   
  60. 13、同步和異步有和異同,在什麼情況下分別使用他們?舉例說明。   
  61. 同步:上一段代碼沒的完成,下一段必須等到上一段代碼完成後纔可以執行。如買票排隊   
  62. 異步:上一段代碼沒的完成,下一段不必等到上一段代碼完成就可以執行。如手機發送短信。  
12、設計4個線程,其中兩個線程每次對j增加1,另外兩個線程對j每次減少1。寫出程序

public class TestThread
{
private int j;
public synchronized void inc()
{
j++;
System.out.println(Thread.currentThread().getName() + "-inc:" + j);
}
public synchronized void dec()
{
j--;
System.out.println(Thread.currentThread().getName() + "-dec:" + j);
}
public static void main(String[] args)
{
TestThread t=new TestThread();
for (int i = 0; i < 2; i++)
{
Thread inc=new Thread(new Inc(t));
Thread dec=new Thread(new Dec(t));
inc.start();
dec.start();
}
}
}

class Inc implements Runnable
{
private TestThread obj;
public Inc(TestThread obj)
{
this.obj=obj;
}
public void run()
{
// for (int i = 0; i < 100; i++)
// {
this.obj.inc();
// }
}
}
class Dec implements Runnable
{
private TestThread obj;
public Dec(TestThread obj)
{
this.obj=obj;
}
public void run()
{
// for (int i = 0; i < 100; i++)
// {
this.obj.dec();
// }
}
}

13、同步和異步有和異同,在什麼情況下分別使用他們?舉例說明。
同步:上一段代碼沒的完成,下一段必須等到上一段代碼完成後纔可以執行。如買票排隊
異步:上一段代碼沒的完成,下一段不必等到上一段代碼完成就可以執行。如手機發送短信。
Java代碼 複製代碼 收藏代碼
  1. 14、sleep() 和 wait() 有什麼區別?   
  2. Sleep是指休眠給定的時間,當這個時間達到之後,線程會再次醒來。   
  3. Wait是等待狀態,多長時間不清楚,由另一個線程將其喚醒。  
14、sleep() 和 wait() 有什麼區別?
Sleep是指休眠給定的時間,當這個時間達到之後,線程會再次醒來。
Wait是等待狀態,多長時間不清楚,由另一個線程將其喚醒。
Java代碼 複製代碼 收藏代碼
  1. 15、當一個線程進入一個對象的一個synchronized方法後,其它線程是否可進入此對象的其它方法?   
  2. 如只其它方法是同步方法,不可以進入。如果不是可以進入。   
  3. 17、輸入輸出流的理解:   
  4. 在java使用流的機制進行數據的傳送,從文件到內存是輸入流,從內存到文件是輸出流,輸入流可以通過 read讀取,輸出流以write或print寫入,對於流可以是分爲高層流和低層流,低層以一個字節或字符爲單位進行處理,高層流以一批數據爲單位進行處理。   
  5. FileInputStream(System.in)至InputSteamReader至BufferReader   
  6. OutputSteam(System.out)至printStream   
  7. FileReader至BufferedReader   
  8. FileWriter 至 PrintWriter或bufferWriter   
  9. 分類:   
  10. 字節(二進制)   
  11. FileInputStream(低層輸入流)   
  12. FileOutputStream(低層輸出流)   
  13.   
  14. PrintStream(高層流) System.out.println()   
  15. 字符(一個char)   
  16. FileReader   
  17. FileWriter   
  18.   
  19. 18、請寫一個程序的讀寫,要求用兩種方式一種是低層流另一種是高層流。   
  20.   
  21. import java.io.FileWriter;   
  22. import java.io.InputStream;   
  23. import java.io.BufferedWriter;   
  24. import java.io.InputStreamReader;   
  25. import java.io.BufferedReader;   
  26. import java.io.FileReader;   
  27.   
  28. public class Untitled1 {   
  29. public static void writeFileChar() throws Exception {   
  30. FileWriter f = new FileWriter("c:\\aa.txt");   
  31. InputStream is = System.in;   
  32. int c = is.read();   
  33. while (((char) c) != 'x') {   
  34. f.write(c);   
  35. c = is.read();   
  36. }   
  37. f.close();   
  38. is.close();   
  39. }   
  40.   
  41. public static void writeFileString() throws Exception {   
  42. FileWriter f = new FileWriter("c:\\aa.txt");   
  43. BufferedWriter bwr=new BufferedWriter(f);   
  44. BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));   
  45. String c = bf.readLine();   
  46. while (!c.equals("stop")) {   
  47. bwr.write(c+"\r\n");   
  48. c = bf.readLine();   
  49. }   
  50. bwr.close();   
  51. f.close();   
  52. bf.close();   
  53. }   
  54.   
  55. public static void readFileChar() throws Exception {   
  56. FileReader f = new FileReader("c:\\aa.txt");   
  57. int c = f.read();   
  58. while (c!=-1) {   
  59. System.out.print((char)c);   
  60. c=f.read();   
  61. }   
  62. f.close();   
  63. }   
  64.   
  65. public static void readFileString() throws Exception {   
  66. BufferedReader bf = new BufferedReader(new FileReader("c:\\aa.txt"));   
  67. String c = bf.readLine();   
  68. while (c!=null)   
  69. {   
  70. System.out.println(c);   
  71. c=bf.readLine();   
  72. }   
  73. bf.close();   
  74. }   
  75.   
  76. public static void main(String[] args) throws Exception {   
  77. readFileString();   
  78. }   
  79. }   
  80. 19、如何列出某個目錄下的所有文件   
  81. Import java.io.File;   
  82. File f=new File("C:\\");   
  83. File[] f1=f.listFiles();   
  84. for(int i=0;i {   
  85. if(f1[i].isDirectory())   
  86. {   
  87. System.out.println("dirctory is"+f1[i].getName());   
  88. }   
  89. else  
  90. {   
  91. System.out.println("file is"+f1[i].getName());   
  92. }   
  93. }   
  94. }   
  95. 1. 如何列出某個目錄下的所有子目錄   
  96. public static void main(String[] args) throws Exception   
  97. {   
  98. getFile(new File("C:\\entityBean"),"\t");   
  99. }   
  100. public static void getFile(File f,String sem) throws Exception   
  101. {   
  102. System.out.println(sem+f.getName());   
  103. File fl[]=f.listFiles();   
  104. if(fl.length>=1)   
  105. {   
  106. for(int i=0;i {   
  107. if(fl[i].isDirectory())   
  108. {   
  109. getFile(fl[i],sem+"\t");   
  110. }   
  111. }   
  112. }   
  113. }   
  114. 2. 判斷一個文件或目錄是否存在   
  115. File f=new File("C:\\entityBean");   
  116. if(f.exists())   
  117. {   
  118. System.out.println("exist");   
  119. }   
  120. else  
  121. {   
  122. System.out.println("not exist");   
  123. }   
  124. Socket   
  125. 20、用socket通訊寫出客戶端和服務器端的通訊,要求客戶發送數據後能夠回顯相同的數據?   
  126. public class ServerSocket_1   
  127. {   
  128. public static void main(String[] args)   
  129. throws Exception   
  130. {   
  131. ServerSocket ss = new ServerSocket(4001);   
  132. Socket s = ss.accept();   
  133. BufferedReader br = new BufferedReader(new InputStreamReader(s.   
  134. getInputStream()));   
  135. PrintStream ps=new PrintStream(s.getOutputStream());   
  136. String temp = br.readLine();   
  137. while (true)   
  138. {   
  139. System.out.println("客戶端:"+temp);   
  140. ps.println(temp);   
  141. if (temp.equals("stop"))   
  142. {   
  143. break;   
  144. }   
  145. temp = br.readLine();   
  146. }   
  147. br.close();   
  148. ps.close();   
  149. ss.close();   
  150. }   
  151. }   
  152.   
  153. public class ClientSocket   
  154. {   
  155. public static void main(String[] args) throws Exception   
  156. {   
  157. Socket s = new Socket("localhost"4001);   
  158. PrintStream ps = new PrintStream(s.getOutputStream());   
  159. BufferedReader br = new BufferedReader(new InputStreamReader(System.in));   
  160. BufferedReader br_server = new BufferedReader(new InputStreamReader(s.   
  161. getInputStream()));   
  162. String temp = br.readLine();   
  163. while (true)   
  164. {   
  165. ps.println(temp);   
  166. temp = br_server.readLine();   
  167. System.out.println("服務器的信息:" + temp);   
  168. if (temp.equals("stop"))   
  169. {   
  170. break;   
  171. }   
  172. temp = br.readLine();   
  173. }   
  174. s.close();   
  175. br.close();   
  176. br_server.close();   
  177. }   
  178. }   
  179.   
  180. 23、介紹JAVA中的Collection FrameWork(包括如何寫自己的數據結構)?   
  181. 答:Collection FrameWork如下:   
  182. Collection   
  183. ├List   
  184. │├LinkedList   
  185. │├ArrayList   
  186. │└Vector   
  187. │ └Stack   
  188. └Set   
  189. Map   
  190. ├Hashtable   
  191. ├HashMap   
  192. └WeakHashMap   
  193. Collection是最基本的集合接口,一個Collection代表一組Object,即Collection的元素(Elements)   
  194. Map提供key到value的映射  
15、當一個線程進入一個對象的一個synchronized方法後,其它線程是否可進入此對象的其它方法?
如只其它方法是同步方法,不可以進入。如果不是可以進入。
17、輸入輸出流的理解:
在java使用流的機制進行數據的傳送,從文件到內存是輸入流,從內存到文件是輸出流,輸入流可以通過 read讀取,輸出流以write或print寫入,對於流可以是分爲高層流和低層流,低層以一個字節或字符爲單位進行處理,高層流以一批數據爲單位進行處理。
FileInputStream(System.in)至InputSteamReader至BufferReader
OutputSteam(System.out)至printStream
FileReader至BufferedReader
FileWriter 至 PrintWriter或bufferWriter
分類:
字節(二進制)
FileInputStream(低層輸入流)
FileOutputStream(低層輸出流)

PrintStream(高層流) System.out.println()
字符(一個char)
FileReader
FileWriter

18、請寫一個程序的讀寫,要求用兩種方式一種是低層流另一種是高層流。

import java.io.FileWriter;
import java.io.InputStream;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.FileReader;

public class Untitled1 {
public static void writeFileChar() throws Exception {
FileWriter f = new FileWriter("c:\\aa.txt");
InputStream is = System.in;
int c = is.read();
while (((char) c) != 'x') {
f.write(c);
c = is.read();
}
f.close();
is.close();
}

public static void writeFileString() throws Exception {
FileWriter f = new FileWriter("c:\\aa.txt");
BufferedWriter bwr=new BufferedWriter(f);
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String c = bf.readLine();
while (!c.equals("stop")) {
bwr.write(c+"\r\n");
c = bf.readLine();
}
bwr.close();
f.close();
bf.close();
}

public static void readFileChar() throws Exception {
FileReader f = new FileReader("c:\\aa.txt");
int c = f.read();
while (c!=-1) {
System.out.print((char)c);
c=f.read();
}
f.close();
}

public static void readFileString() throws Exception {
BufferedReader bf = new BufferedReader(new FileReader("c:\\aa.txt"));
String c = bf.readLine();
while (c!=null)
{
System.out.println(c);
c=bf.readLine();
}
bf.close();
}

public static void main(String[] args) throws Exception {
readFileString();
}
}
19、如何列出某個目錄下的所有文件
Import java.io.File;
File f=new File("C:\\");
File[] f1=f.listFiles();
for(int i=0;i {
if(f1[i].isDirectory())
{
System.out.println("dirctory is"+f1[i].getName());
}
else
{
System.out.println("file is"+f1[i].getName());
}
}
}
1. 如何列出某個目錄下的所有子目錄
public static void main(String[] args) throws Exception
{
getFile(new File("C:\\entityBean"),"\t");
}
public static void getFile(File f,String sem) throws Exception
{
System.out.println(sem+f.getName());
File fl[]=f.listFiles();
if(fl.length>=1)
{
for(int i=0;i {
if(fl[i].isDirectory())
{
getFile(fl[i],sem+"\t");
}
}
}
}
2. 判斷一個文件或目錄是否存在
File f=new File("C:\\entityBean");
if(f.exists())
{
System.out.println("exist");
}
else
{
System.out.println("not exist");
}
Socket
20、用socket通訊寫出客戶端和服務器端的通訊,要求客戶發送數據後能夠回顯相同的數據?
public class ServerSocket_1
{
public static void main(String[] args)
throws Exception
{
ServerSocket ss = new ServerSocket(4001);
Socket s = ss.accept();
BufferedReader br = new BufferedReader(new InputStreamReader(s.
getInputStream()));
PrintStream ps=new PrintStream(s.getOutputStream());
String temp = br.readLine();
while (true)
{
System.out.println("客戶端:"+temp);
ps.println(temp);
if (temp.equals("stop"))
{
break;
}
temp = br.readLine();
}
br.close();
ps.close();
ss.close();
}
}

public class ClientSocket
{
public static void main(String[] args) throws Exception
{
Socket s = new Socket("localhost", 4001);
PrintStream ps = new PrintStream(s.getOutputStream());
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedReader br_server = new BufferedReader(new InputStreamReader(s.
getInputStream()));
String temp = br.readLine();
while (true)
{
ps.println(temp);
temp = br_server.readLine();
System.out.println("服務器的信息:" + temp);
if (temp.equals("stop"))
{
break;
}
temp = br.readLine();
}
s.close();
br.close();
br_server.close();
}
}

23、介紹JAVA中的Collection FrameWork(包括如何寫自己的數據結構)?
答:Collection FrameWork如下:
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Hashtable
├HashMap
└WeakHashMap
Collection是最基本的集合接口,一個Collection代表一組Object,即Collection的元素(Elements)
Map提供key到value的映射
Java代碼 複製代碼 收藏代碼
  1. 24、請說出你所知道的線程同步的方法   
  2. HashTable中的put,get,remove   
  3. Vector的相關方法。  
24、請說出你所知道的線程同步的方法
HashTable中的put,get,remove
Vector的相關方法。
Java代碼 複製代碼 收藏代碼
  1. 1、JDBC如何做事務處理?   
  2. Con.setAutoCommit(false)   
  3. Con.commit();   
  4. Con.rollback();  
1、JDBC如何做事務處理?
Con.setAutoCommit(false)
Con.commit();
Con.rollback();
Java代碼 複製代碼 收藏代碼
  1. 2、寫出幾個在Jdbc中常用的接口   
  2. preparedStatement,callableStatement,statement,Connection,ResultSet  
2、寫出幾個在Jdbc中常用的接口
preparedStatement,callableStatement,statement,Connection,ResultSet
Java代碼 複製代碼 收藏代碼
  1. 3、簡述你對Statement,PreparedStatement,CallableStatement的理解   
  2. statement用於執行靜態 SQL 語句並返回它所生成結果的對象,在執行時確定sql。   
  3.   
  4. PreparedStatement表示預編譯的 SQL 語句的對象。 SQL 語句被預編譯並且存儲在 PreparedStatement 對象中。然後可以使用此對象高效地多次執行該語句,可以傳參數,在得到PreparedStatement對象時確定sql.   
  5. CallableStatement用於執行 SQL 存儲過程的接口。如果有輸出參數要註冊說明是輸出參數。  
3、簡述你對Statement,PreparedStatement,CallableStatement的理解
statement用於執行靜態 SQL 語句並返回它所生成結果的對象,在執行時確定sql。

PreparedStatement表示預編譯的 SQL 語句的對象。 SQL 語句被預編譯並且存儲在 PreparedStatement 對象中。然後可以使用此對象高效地多次執行該語句,可以傳參數,在得到PreparedStatement對象時確定sql.
CallableStatement用於執行 SQL 存儲過程的接口。如果有輸出參數要註冊說明是輸出參數。
Java代碼 複製代碼 收藏代碼
  1. 4、Java中訪問數據庫的步驟?   
  2. 1連接Oracle數據庫   
  3. Class.forName(“oracle.jdbc.driver.OracleDriver”);   
  4. Connection con=DriverManager.openConnection(“jdbc:oracle:thin:@localhost:1521:DataBase ”,” UserName”,”Password ”)   
  5. 1. 利用JDBC檢索出表中的數據   
  6. Class.forName(“”);   
  7. Connection con=DriverManager.openConnection(“ ”,” ”,” ”)   
  8. preparedStatment ps=Con.preparedStatment(“select * from [table]”);   
  9. ResultSet rs=ps.executeQuery();   
  10. While(rs.next)   
  11. {   
  12. Rs.getString(1) 或rs.getString(“字段名”)   
  13. }   
  14. 5、JDBC中的核心類及其作用是什麼?   
  15. DriverManager   
  16. Class.forName();   
  17. DriverManager.openConnection(“”,”sa”,””)   
  18. Connection   
  19. PreparedStatement(Statement)   
  20. ResultSet rs=executeQuery() dql   
  21. While(rs.next())   
  22. {   
  23.   
  24. }   
  25. executeUpdate() dml ddl   
  26. 6、執行存儲過程用那一個類,如何操作輸出參數?(操作)   
  27. CallableStatement c=con. prepareCall ("{call getCustomerName(?,?)}");   
  28. c.setString(1,"1");   
  29. c.registerOutParameter(2,java.sql.Types.VARCHAR);   
  30. c.execute();   
  31. c.getString(2);   
  32. 8、可能會讓你寫一段Jdbc連Oracle的程序.   
  33. Class.forName("oracle.jdbc.driver.OracleDriver");   
  34. Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:accp","system","system");   
  35. 9、Class.forName的作用?爲什麼要用?   
  36. 註冊一個數據庫驅動,將驅動加載到當前的JVM中。   
  37. 10、Jdo是什麼?   
  38. JDO是Java對象持久化的新的規範,爲java data object的簡稱,也是一個用於存取某種數據倉庫中的對象的標準化API。JDO提供了透明的對象存儲,因此對開發人員來說,存儲數據對象完全不需要額外的代碼(如JDBC API的使用)。這些繁瑣的例行工作已經轉移到JDO產品提供商身上,使開發人員解脫出來,從而集中時間和精力在業務邏輯上。另外,JDO很靈活,因爲它可以在任何數據底層上運行。JDBC只是面向關係數據庫(RDBMS)JDO更通用,提供到任何數據底層的存儲功能,比如關係數據庫、文件、XML以及對象數據庫(ODBMS)等等,使得應用可移植性更強。(o/rMapping工具 集合處理)   
  39. 11、在ORACLE大數據量下的分頁解決方法。一般用截取ID方法,還有是三層嵌套方法   
  40. create or replace package myPack   
  41. is   
  42. type c_type is ref cursor;   
  43. procedure getPage(v_sql varchar2,pageSize number,pageIndex number,c out c_type);   
  44. end;   
  45.   
  46. create or replace package body myPack   
  47. is   
  48. procedure getPage(v_sql varchar2,pageSize number,pageIndex number,c out c_type)   
  49. is   
  50. pageTotal int:=0;   
  51. pageFirstRow int:=0;   
  52. pageLastRow int:=0;   
  53. rowTotal int:=0;   
  54. begin   
  55. execute immediate 'select count(*) from ('||v_sql||')' into rowTotal;   
  56. pageTotal:=ceil(rowTotal/pageSize);   
  57. if(pageIndex<1) then   
  58. raise_application_error(-20001,'頁數不能小於1');   
  59. end if;   
  60. if(pageIndex>pageTotal) then   
  61. raise_application_error(-20001,’頁數太大,不能讀取’);   
  62. end if;   
  63. pageFirstRow:=(pageIndex-1)*pageIndex+1;   
  64. pageLastRow:=pageFirstRow+pageSize;   
  65. open c for ‘ select * from ‘||v_sql||’ where rownum<'||   
  66. pageLastRow||'minus select * from '||v_sql   
  67. ||' where rownum<'||pageFirstRow;   
  68. end;   
  69. end;  
4、Java中訪問數據庫的步驟?
1連接Oracle數據庫
Class.forName(“oracle.jdbc.driver.OracleDriver”);
Connection con=DriverManager.openConnection(“jdbc:oracle:thin:@localhost:1521:DataBase ”,” UserName”,”Password ”)
1. 利用JDBC檢索出表中的數據
Class.forName(“”);
Connection con=DriverManager.openConnection(“ ”,” ”,” ”)
preparedStatment ps=Con.preparedStatment(“select * from [table]”);
ResultSet rs=ps.executeQuery();
While(rs.next)
{
Rs.getString(1) 或rs.getString(“字段名”)
}
5、JDBC中的核心類及其作用是什麼?
DriverManager
Class.forName();
DriverManager.openConnection(“”,”sa”,””)
Connection
PreparedStatement(Statement)
ResultSet rs=executeQuery() dql
While(rs.next())
{

}
executeUpdate() dml ddl
6、執行存儲過程用那一個類,如何操作輸出參數?(操作)
CallableStatement c=con. prepareCall ("{call getCustomerName(?,?)}");
c.setString(1,"1");
c.registerOutParameter(2,java.sql.Types.VARCHAR);
c.execute();
c.getString(2);
8、可能會讓你寫一段Jdbc連Oracle的程序.
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:accp","system","system");
9、Class.forName的作用?爲什麼要用?
註冊一個數據庫驅動,將驅動加載到當前的JVM中。
10、Jdo是什麼?
JDO是Java對象持久化的新的規範,爲java data object的簡稱,也是一個用於存取某種數據倉庫中的對象的標準化API。JDO提供了透明的對象存儲,因此對開發人員來說,存儲數據對象完全不需要額外的代碼(如JDBC API的使用)。這些繁瑣的例行工作已經轉移到JDO產品提供商身上,使開發人員解脫出來,從而集中時間和精力在業務邏輯上。另外,JDO很靈活,因爲它可以在任何數據底層上運行。JDBC只是面向關係數據庫(RDBMS)JDO更通用,提供到任何數據底層的存儲功能,比如關係數據庫、文件、XML以及對象數據庫(ODBMS)等等,使得應用可移植性更強。(o/rMapping工具 集合處理)
11、在ORACLE大數據量下的分頁解決方法。一般用截取ID方法,還有是三層嵌套方法
create or replace package myPack
is
type c_type is ref cursor;
procedure getPage(v_sql varchar2,pageSize number,pageIndex number,c out c_type);
end;

create or replace package body myPack
is
procedure getPage(v_sql varchar2,pageSize number,pageIndex number,c out c_type)
is
pageTotal int:=0;
pageFirstRow int:=0;
pageLastRow int:=0;
rowTotal int:=0;
begin
execute immediate 'select count(*) from ('||v_sql||')' into rowTotal;
pageTotal:=ceil(rowTotal/pageSize);
if(pageIndex<1) then
raise_application_error(-20001,'頁數不能小於1');
end if;
if(pageIndex>pageTotal) then
raise_application_error(-20001,’頁數太大,不能讀取’);
end if;
pageFirstRow:=(pageIndex-1)*pageIndex+1;
pageLastRow:=pageFirstRow+pageSize;
open c for ‘ select * from ‘||v_sql||’ where rownum<'||
pageLastRow||'minus select * from '||v_sql
||' where rownum<'||pageFirstRow;
end;
end;
Java代碼 複製代碼 收藏代碼
  1. Web編程Jsp&Servlet技術   
  2. 1、簡單說說tomcat的配置?   
  3. JAVA_HOME=JDK的根目錄   
  4. CATALINA_HOME=tomcat的根目錄   
  5.   
  6. CATALINA-HOME\conf\server.xml:可以配置tomcat的端口,可以配置tomcat中下連接池。   
  7. CATALINA-HOME\common\lib:存放公用的類包   
  8.   
  9. 在My eclipse中如何配置tomcat   
  10. 在eclipse中,選擇windows->preference->MyEclipse->ApplicationServer->Tomcat   
  11. 選擇Tomcat 的安裝目錄,並選擇TomCat所需的jdk,選擇enable,確定即可。  
Web編程Jsp&Servlet技術
1、簡單說說tomcat的配置?
JAVA_HOME=JDK的根目錄
CATALINA_HOME=tomcat的根目錄

CATALINA-HOME\conf\server.xml:可以配置tomcat的端口,可以配置tomcat中下連接池。
CATALINA-HOME\common\lib:存放公用的類包

在My eclipse中如何配置tomcat
在eclipse中,選擇windows->preference->MyEclipse->ApplicationServer->Tomcat
選擇Tomcat 的安裝目錄,並選擇TomCat所需的jdk,選擇enable,確定即可。
Java代碼 複製代碼 收藏代碼
  1. 2、JSP中動態INCLUDE與靜態INCLUDE的區別?   
  2. jsp:include:在運行時調用另一個頁面,變量是可以重複的。   
  3. :在轉譯時合在一起,會成爲同一個類,變量不可以重複。  
2、JSP中動態INCLUDE與靜態INCLUDE的區別?
jsp:include:在運行時調用另一個頁面,變量是可以重複的。
:在轉譯時合在一起,會成爲同一個類,變量不可以重複。
Java代碼 複製代碼 收藏代碼
  1. 3、forward和redirect的區別?   
  2. forward: 轉發,在下一個頁面中,request保留上一個頁面中的request的所有值   
  3.   
  4. redirect: 跳轉,不傳遞request對象。   
  5. 4、Servlet的體系結構是什麼?   
  6. Servlet   
  7. GenericServlet   
  8. HttpServlet   
  9. 自定義   
  10. 5、如何實現一個自定義的servlet?   
  11. extends HttpServlet 並覆蓋doPost或doGet方法   
  12.   
  13. 在web.xml中進行部署  
3、forward和redirect的區別?
forward: 轉發,在下一個頁面中,request保留上一個頁面中的request的所有值

redirect: 跳轉,不傳遞request對象。
4、Servlet的體系結構是什麼?
Servlet
GenericServlet
HttpServlet
自定義
5、如何實現一個自定義的servlet?
extends HttpServlet 並覆蓋doPost或doGet方法

在web.xml中進行部署
Java代碼 複製代碼 收藏代碼
  1. 6、Servlet的生命週期是什麼?   
  2. Init   
  3. 多次執行doGet或doPost   
  4. destroy  
6、Servlet的生命週期是什麼?
Init
多次執行doGet或doPost
destroy
Java代碼 複製代碼 收藏代碼
  1. 7、jsp就是一個servlet是否正確?   
  2. 對  
7、jsp就是一個servlet是否正確?
對
Java代碼 複製代碼 收藏代碼
  1. 8、請羅列jsp中的腳本、指令及動作?   
  2. 腳本   
  3.   
  4. 指令   
  5.   
  6.   
  7.   
  8. 動作:   
  9. 在scope中如果沒有實例化一個對象,如果有直接用以前的。   
  10. 向一個bean中設置屬性值   
  11. jsp頁的轉發   
  12. 導入一個jsp頁面   
  13. 9、JSP的內置對象及方法   
  14. Request request表示HttpServletRequest對象。取客戶端表單域信息及cookie, header, 和session   
  15. response response表示HttpServletResponse對象,對客戶端的響應返回文本、寫cookies。   
  16. out out 向客戶端打印html文本.   
  17. pageContext :當前jsp頁面的上下文環境,可以得到session、request、application等內置對象,在自定義標籤中使用的很多。   
  18. session session表示一個請求的javax.servlet.http.HttpSession對象。Session一個用戶多個頁面共享同一變量。   
  19. application applicaton 表示一個javax.servle.ServletContext對象。存放容器級的變量。   
  20. config config表示一個javax.servlet.ServletConfig對象。該對象用於存取servlet實例的初始化參數。   
  21. page page表示從該頁面產生的一個servlet實例   
  22. exception:異常,當iserrorpage=true  
  23. 10、說出在JSP頁面裏是怎麼分頁的?   
  24. 頁面需要保存以下參數:(數據庫的分頁及比較)   
  25. 總行數:根據sql語句得到總行數   
  26. 每頁顯示行數:設定值   
  27. 當前頁數:請求參數   
  28. 頁面根據當前頁數和每頁行數計算出當前頁第一行行數,定位結果集到此行,對結果集取出每頁顯示行數的行即可。   
  29.   
  30. 數據庫:   
  31. Sqlserver:   
  32. SELECT TOP 頁大小 *   
  33. FROM TestTable   
  34.   
  35. WHERE (ID NOT IN   
  36. (SELECT TOP 頁大小*(頁數-1) id   
  37. FROM 表   
  38. ORDER BY id))   
  39. ORDER BY ID   
  40.   
  41. –pageSize=5 頁大小   
  42. –pageIndex=2 所要的頁   
  43. –如果有主鍵可以,沒以及鍵不行   
  44. select top 5 *   
  45. from aa where a1 not in   
  46. (select top 5 a1 from aa order by a1)   
  47. order by a1;   
  48.   
  49. oracle:   
  50. select * from ‘||v_sql||’ where rownum<'||   
  51. pageLastRow||'minus select * from '||v_sql   
  52. ||' where rownum<'||pageFirstRow;   
  53.   
  54. Session   
  55. 先取出數據中的所有信息封裝到對象並保存在session中,轉發到jsp頁面做如下處理。  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章