1、 簡述java的基本曆史
java起源于sun公司的一個green的項目,其原先目的是:為家用消費電子産品發送一個資訊的分布式代碼系統,通過發送資訊控制電視機、冰箱等
2、 簡單寫出java特點,寫出5個以上,越多越好
簡單的、面向對象的、分布式的、安全的、穩定的、與平台無關的、可解釋的、多線的、動态的語言。
3、 什麼是java?
java:一種程式設計語言
一種開發環境
一種應用環境
一種部署環境
4、 請寫出java的版本分類,以及每種版本的應用方向
三種版本:
jme:是面向記憶體有限的移動終端. 為消費性産品設計的;
jse: 是sun公司針對桌面開發和低端商務計算方案開發的版本。為筆記本電腦、pc機設計的;
jee: 是一種利用java 2平台來簡化企業解決方案的開發、部署和管理相關的複雜問題的體系結構。 為企業級的、伺服器端的高端應用而設計的;
5、 描述java技術的主要特性
java虛拟機
垃圾回收
代碼安全性
如果你想學習java可以來這個群,首先是二二零,中間是一四二,最後是九零六,裡面有大量的學習資料可以下載下傳。
6、 描述 java虛拟機的功能
(1)通過 classloader 尋找和裝載 class 檔案
(2)解釋位元組碼成為指令并執行,提供 class 檔案的運作環境
(3)進行運作期間垃圾回收
(4)提供與硬體互動的平台
7、 簡述java代碼安全性
(1)編譯時的錯誤檢驗
(2)類裝載檢查,把本機上的類和網絡資源類相分離,在調入類的時候進行檢查,因而可以限制任何“特洛伊木馬”的應用
(3)位元組碼校驗
(4)沙箱機制,限定通路權限
8、 描述java垃圾回收機制
java 程式設計語言解除了程式員釋放記憶體的責任。它可提供一種系統級線程以跟蹤每一次記憶體的配置設定情況。在 java 虛拟機的空閑周期,垃圾收集線程檢查并釋放那些可被釋放的記憶體。垃圾收集在 java 技術程式的生命周期中自動進行,它解除了釋放記憶體的要求,這樣能夠有效避免記憶體漏洞和記憶體洩露(記憶體洩露就是程式運作期間,所占用的記憶體一直往上漲, 很容易造成系統資源耗盡而降低性能或崩潰 。
垃圾回收有以下特點:
(1)垃圾回收是一個自動的系統行為,程式員不能控制垃圾回收的功能和行為。
(2)有一些跟垃圾回收相關的方法,比如:system.gc( ) ,調用這些方法,僅僅是在通知垃圾回收程式,至于垃圾回收程式運不運作,什麼時候運作,都是無法控制的。
(3)程式員可以通過設定對象為 null,來标示某個對象不再被需要了, 這隻是表示這個對象可以被回收了,并不是馬上被回收。
9、 簡述java代碼的運作過程
(1)編寫代碼
(2)編譯
(3)類裝載 通過類裝載器裝載class檔案
(4)校驗代碼 由位元組碼校驗
(5)解釋 由解釋器将位元組碼轉換成機器碼
(6)運作
10、 簡述如何搭建java開發環境
首先下載下傳安裝jdk 然後配置環境
(2)配置classpath java運作應用程式時所需要的類包的路徑
(3)配置java_home 供需要運作java的程式使用
11、 簡述classpath,path,java_home的意義和配置方法
classpath java運作應用程式時所需要的類包的路徑
java_home 供需要運作java的程式使用
12、 請描述:一個完整的java檔案的代碼分幾個部分,每部分都起什麼作用,大緻的寫法
package 目前類所在位置
import 目前類運作時所需要的包或類
public class 類名 {
屬性定義;
方法定義:
構造方法定義;
public static void main(string args []) 例外{ 程式入口
語句;
}
}
//注釋
13、 java代碼的注釋有幾種?分别舉例說明
(1) // 單行注解
(2) /* */ 塊注釋
(3) /* *
* 文檔注釋
*/
14、 什麼是java代碼的語句,什麼是java代碼的塊,舉例說明
語句 是一行以分号終止的代碼,例:int a;
塊 是以{ }為邊界的一些語句的集合 例:public void tt( ){}
15、 什麼是标示符?
辨別符:是賦予變量、類、方法的名稱。
//辨別符是辨別變量、類或方法的有效字元序列
16、 标示符定義的規則?
(1) 首字母隻能以字母、下劃線、$開頭,其後可以跟字母‘下劃線、$和數字配置classpath
(2) 表示符不能是關鍵字
(3) 辨別符區分大小寫
17、 什麼是關鍵字?
關鍵字就是程式設計語言與機器語言的編碼約定
18、 true、false、null、sizeof、goto、const那些是java關鍵字
true 、false 、null 為java的關鍵字
19、 java的基本資料類型有幾種?分别是?
short int long boolean float double char byte
/*布爾類型(boolean)
字元型(char)
數值類型
定點類型 位元組型(byte)
短整型(short)
整型(int)
長整型(long)
浮點類型 單精度(float)
雙精度(double)
20、 請寫出每種基本類型的預設值?取值範圍?分别給出一個定義的例子
預設值 取值範圍 示例
位元組型 : 0 -2^7----2^7-1 byte b=10;
字元型 : ' \u0000' 0----2^16-1 char c=’c’ ;
short : 0 -2^15----2^15-1 short s=10;
int : 0 -2^31----2^31-1 int i=10;
long : 0 -2^63----2^63-1 long o=10l;
float : 0.0f -2^31----2^31-1 float f=10.0f
double : 0.0d -2^63----2^63-1 double d=10.0;
boolean: false true\false boolean flag=true;
21、 在基本類型中,如果不明确指定,整數型的預設是什麼類型?帶小數的預設是什麼類型?
整數類型 預設為 int
帶小數的預設為 double
boolean的預設值 false
22、 如何定義float類型和long型
float f = 1.2f
long l = 1.2l
23、 什麼是變量?
變量是用來引用一塊記憶體區域或一個值,用辨別符來表示,可以通過操作變量來操作變量所對應的記憶體區域或值塊的值。
24、 變量的定義規則?
(1) 以字母、$、下劃線開頭,其後可以跟字母、下劃線、$和數字;
(2) 首字母小寫,中間單詞用大寫字母隔開;
(3) 名稱具有一定含義;
//4.可以先聲明再指派也可以聲明的同時進行指派
//5.沒有指派的變量是不可以使用的
25、 請寫出java編碼約定中對下列部分的要求:類、屬性、方法、包、檔案名、變量、常量、控制結構、語句行、注釋
類: 一個類檔案中類名要和檔案名相同,類名一定要以大寫字母開頭,單詞之間用大寫字母分隔
屬性: 屬性名首字母小寫,中間用大寫字母隔開。
方法: 方法名首字母小寫,中間用大寫字母隔開。
包: 引用包必須寫在類檔案的開頭,有且隻能有一個包,全部用小寫字母。
控制結構:當語句是控制結構的一部分時,即使是單個語句,也應使用大括号将語句封閉。
語句行:每行隻寫一個語句,并使用四個縮進的空格,使代碼更易讀,注意用分号結束。
注釋: 用注釋來說明那些不明顯代碼的段落。
常量: 常量名一般用大寫字母,單詞之間用下劃線分隔,一旦指派不允許修改。
26、 什麼是javadoc?
按照一定格式生成程式的文檔的工具。
27、 什麼是引用類型?
使用者定義類型, 它可引用類和數組。
除去基本資料類型的其他類型都是引用資料類型。
28、 什麼是按值傳遞?什麼是按引用傳遞?
按值傳遞:就是将該值的副本傳過去(基本資料類型+string類型的傳遞,就是按值傳遞)
按引用傳遞:就是将值的記憶體位址傳過去(除基本資料類型+string以外類型的傳遞,就是引用傳遞)
如果你想學習java可以來這個群,首先是二二零,中間是一四二,最後是九零六,裡面有大量的學習資料可以下載下傳。
29、 如何建立一個新對象?如何使用對象中的屬性和方法?
使用new 關鍵字來建立一個新的對象;
通過對象的執行個體用“.”(點)來調用對象中的屬性和方法;
靜态的方法和屬性,也可以直接用類名“.”(點)來調用;
30、 簡述new關鍵字所做的工作
new 建立一個對象,并為對象配置設定一塊記憶體。
31、 簡述”=” 和”= =”的功能和差別
"=" 指派,
"= ="當比較基本資料類型的時候,判斷前後兩個值是否相等;
當比較引用資料類型的時候,判斷= =前後兩個值的記憶體位址是否相等;
差別:
= :為指派表達式
= = :為邏輯表達式
32、 什麼是執行個體變量?什麼是局部變量?什麼是類變量?什麼是final變量?
執行個體變量: 類中定義的變量,即類成員變量,如果沒有初始化,會有預設值;
局部變量: 在方法中定義的變量,必須初始化;
類變量: 用static修飾的屬性;
final變量: 用final 修飾的變量,
33、 簡述上述各種變量的定義規則和使用規則?
執行個體變量: 不需要static關鍵字來聲明,需要類的執行個體(對象)調用(用“.”);
類變量: 用static修飾,可以用類名調用,也可以用類的執行個體調用;
局部變量: 在方法内任意定義變量即為局部變量;
final變量: 一旦指派,不可以再修改的變量;
final屬性隻允許指派一次,且隻能通過構造方法指派,定義後也就是一個常量;
final修飾的變量,隻允許指派一次
34、 a++和++a的差別?
a++ : 先使用,後加1
++a : 先加1,後使用
35、 請描述instanceof、?:、&、&&各自的功能
instanceof :用來判斷某個執行個體變量是否屬于某種類的類型。
? : 三目運算符:
表達式1?表達式2:表達式3
如果表達式1為true,執行表達式2,否則執行表達式3
&: 位運算:按位與 |
&&: 邏輯運算:邏輯與
36、 請描述>>、<<、>>>的功能
10>>4 :算術或符号右移位運算符
<< :算術或符号左移位運算符
>>> :邏輯或無符号右移位運算符
37、 請描述什麼是強制類型轉換?什麼是自動類型轉換?什麼是向上造型?并分别舉例說明
強制類型轉換:在一個類型前面加( ),來強制轉換
long l = 9l;
int i = (int)l;
自動類型轉換:
int i = 5;
string str = ""+i;
向上造型:把範圍小的造型為範圍大的類型:
int i = 2;
long l = i;
38、 請寫出完整的if條件控制語句的結構
if(布爾表達式){
語句
}else{
語句
39、 請寫出完整的switch語句的結構
switch(字元){
case 字元: 語句
break;
default:語句
}
40、 請寫出完整的for語句的結構
for(初始語句;條件語句;步長){
}
41、 請寫出完整的while語句的結構
while(boolean語句){
42、 請寫出完整的do while語句的結構
do{
}while(boolean語句);
43、 請描述break 和 continue的功能和用法
break:終止(跳出)最近的循環
continue:跳出本次循環,執行下一次循環
44、 定義一個一維的int數組,先建立它,并初始化它,給它指派,然後輸出其中的一個值
public class arr{
public static void main(string args[]){
int a[] = new int[5];
a={1,2,3,4,5};//錯誤 , 隻能在初始化時這樣做
a[0]=1;
a[1]=2;
system.out.println(a[0]);
}
}
45、 定義一個一維的a類型數組,直接定義并指派,然後輸出其中的一個值
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLlR2bjlHcvN2LcNXZnFWbp9CXt92YuM3ZvxmYuNmLu9Wbt92Yvw1LcpDc0RHaiojIsJye.gif)
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLlR2bjlHcvN2LcNXZnFWbp9CXt92YuM3ZvxmYuNmLu9Wbt92Yvw1LcpDc0RHaiojIsJye.gif)
46、 把上面的數組改成2維的數組
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLlR2bjlHcvN2LcNXZnFWbp9CXt92YuM3ZvxmYuNmLu9Wbt92Yvw1LcpDc0RHaiojIsJye.gif)
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLlR2bjlHcvN2LcNXZnFWbp9CXt92YuM3ZvxmYuNmLu9Wbt92Yvw1LcpDc0RHaiojIsJye.gif)
47、 舉例說明數組拷貝方法的使用:arraycopy方法
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLlR2bjlHcvN2LcNXZnFWbp9CXt92YuM3ZvxmYuNmLu9Wbt92Yvw1LcpDc0RHaiojIsJye.gif)
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLlR2bjlHcvN2LcNXZnFWbp9CXt92YuM3ZvxmYuNmLu9Wbt92Yvw1LcpDc0RHaiojIsJye.gif)
48、 什麼是構造和析構方法?功能是?
構造方法:每個類至少有一個構造方法,類初始化時調用的方法
1.方法名和類名相同
2.無傳回值類型
格式:通路權限 類名(參數清單) {};
1.自己定義構造後,就沒有預設的構造方法
2.無構造方法時,預設為空參的構造方法(無參數,方法體為空)
析構方法:finalize
類銷毀時,自動調用方法
當對象在記憶體中被删除時,自動調用該方法
在此方法中可以寫回收對象内部的動态空間的代碼
49、 簡述java的通路修飾符類型?分别有什麼功能?
public 公開的,任何一個類都有可以通路
protected 同包同類,隻可被它的子類通路
default 隻能被同一個包中類通路
private 私有的,隻能在本類中被通路
50、 分别說明:在類上、在屬性上、在方法上能使用哪些通路修飾符
在類上:public default final
在方法上: 通路權限:public protected private default
方法修飾符:static
final
傳回類型:void
在屬性上:public protected private default
static
final
51、 簡述什麼是包?包的功能
包:對所定義的多個java類進行分組,将多個功能相關的類定義到一個包(檔案)中。
功能:1.易于查找和使用适當的類
2.包不止包含類和接口,還可以包含其它包,形成層次的包空間
3.有助于避免命名沖突
52、 請寫出5個以上的jdk中的包,以及他們的基本功能
java.awt: 包含構成抽象視窗工具集的多個類,用來建構和管理應用程式的圖形使用者界面
java.lang: 提供java編成語言的程式設計的基礎類
java.io: 包含提供多種輸出輸入功能的類,
java.applet: 包含java小應用程式的類
java.util: 包含一些實用性的類
53、 什麼是包裝類?java中都有哪些包裝類
在jdk中針對各種基本類型分别定義相應的引用類型 --------------稱為封裝類
boolean byte short integer long float double character
54、 oop(面向對象)語言的三大特征是?
封裝性,繼承性,多态性
55、 分别表述類的三大特性及其他們的功能
封裝:隐藏類的實作細節、迫使使用者去使用一個接口去通路資料、使代碼更好維護
繼承:子類可以直接繼承使用父類的方法,程式員隻需要做的是定義額外特征或規定将适用的變化
多态性:同一個行為具有多個不同表現形式或形态的能力
56、 如何實作繼承?繼承的規則?
public class a extends b{
}
(1) 單繼承性
(2) 構造方法不能繼承
(3) super引用父類,調用父類的屬性,方法
(4) 當子類中出現與父類的方法名,傳回類型,參數清單相同的方法時要覆寫此方法
57、 簡述this和super的功能和用法
this :
(1) 能通路除構造方法以外所有的屬性、方法,通過this. 來調用方法和屬性
(2) 不可以在靜态方法中使用,
(3) 在調用其它構造方法時,必須放在該構造方法的第一行
(4) 在構造方法中使用this(參數清單),相當于調用本類的其它構造方法,它必須作為構造方法的第一句
super :通路父類
(1) super. 點取父類中被子類隐藏的方法和屬性,
(2) 通過 super(參數清單) 來調用父類的屬性和方法,在調用父類的構造方法時必須放在子類構造方法裡的第一行;
58、 如何确定在多态的調用中,究竟是調用的那個方法?
new的是哪一個類就是調用的哪個類的方法。
59、 請描述方法定義的完整的文法結構
權限修飾符 修飾符 傳回類型 方法名(參數) 例外{
方法體;
60、 什麼是重載?
在一個類中出現方法名相同,但參數清單不同時,這種情況就是重載。
61、 簡述重載的規則
(1) 方法名稱必須相同;
(2) 參數清單必須不同(個數不同,或類型不同,或參數排列順序不同);
(3) 與傳回類型無關;
62、 什麼是方法的覆寫?什麼情況下出現?
方法覆寫:
子類可以修改從父類繼承過來的行為,也就是說子類可以建立一個與父類方法有不同功能的方法,但具有相同的:名稱、傳回類型名和參數清單。
在父子類的情況下出現時。
63、 方法覆寫的規則?
(1) 方法名要和父類中被覆寫的方法名相同,傳回類型相同,參數清單相同。
(2) 通路權限要大于等于被覆寫方法的權限。
(3) 例外清單要小于等于被覆寫方法的例外清單。
64、 static修飾符的功能是?可以用在什麼地方?怎麼通路?
static 修飾符功能:
(1) 共用一塊記憶體區域,也就是用static修飾的變量或成員方法對所有類的執行個體都是相同的
(2) 靜态成員方法和靜态變量的優點在于他們能在沒有建立類的任何一個執行個體的情況下被引用。
(3) 可以用在方法或屬性上
通路方式:
(1) 直接使用類名調用
(2) new 一個執行個體,用執行個體調用
65、 static的基本規則
(1) 類中的靜态方法隻可以調用靜态的屬性和方法,不允許調用非靜态的屬性和方法。
(2) 靜态變量為類變量,可以用類名直接調用靜态的屬性和方法。
(3) 靜态方法中不允許出現this和super
(4) 構造方法不允許聲明static
(5) 非靜态變量為執行個體變量,通過執行個體調用
(6) 靜态方法不能被非靜态方法覆寫
66、 final修飾符的功能是?可以用在什麼地方?
功能:final标記所有通用的功能,不能随意更改
可以用在類、屬性和方法上
67、 final的基本規則
(1) final修飾的類不能被繼承
(2) final修飾的成員變量隻允許指派一次,且隻能通過構造方法裡指派。
(3) final修飾的局部變量即為常量,隻能指派一次。
(4) final修飾的方法不允許被子類覆寫。
68、 什麼是抽象方法,什麼是抽象類
用abstract修飾的方法,隻有方法的聲明,而沒有方法的實作,就叫抽象方法。
用abstract修飾的類,就叫抽象類。
69、 抽象類的規則
(1) 抽象類内部可以沒有抽象方法
(2) 必須用abstract修飾
(3) 不能夠直接使用抽象類,必須通過子類繼承并且實作
(4) 抽象方法不允許被private修飾
70、 什麼情況下使用抽象類
(1) 當一個類的一個或多個方法是抽象方法時;
(2) 當類是一個抽象類的子類,并且不能為任何抽象方法提供任何實作細節或方法體時;
(3) 當一個類實作一個接口,并且不能為任何抽象方法提供實作細節或方法體時;
71、 equals方法和”= =”的功能和差別
功能:判斷對象是否相等
差別:
equals方法比較的是對象的值
= =:比較的是對象值的記憶體位址,對基本資料類型來說= =比較的是數值
72、 tostring方法的功能和基本寫法
傳回一個string類型
public string tostring(){
return “”;
73、 string的方法的功能和基本使用方法,請描述5個以上
substring(參數1,參數2); 功能:取字元串中參數1到參數2的的所有字元; "string".substring(0,1);
replace(參數1,參數2); 功能:用參數1中的值替換字元串中所有參數2的值 "string".replace(ing,tt);
equals( ); 功能:判斷兩個字元串是否相等 "string".equals("tt");
trim( ); 功能:去掉字元串兩邊的空格 "string".trim();
indexof( ); 功能:查找字元串中參數所在位置,并傳回字元串第一個出該參數的下标
"string".indexof("ing");
split( ); 功能:根據參數分割該字元串 "string".split("-");
74、 為什麼使用stringbuffer類?有什麼功能和優點?
–隻建立一個對象
–stringbuffer 對象的内容是可以被修改的
–除了字元的長度之外,還有容量的概念
–通過動态改變容量的大小,加速字元管理
75、 舉例說明如何使用stringbuffer
stringbuffer sb = new stringbuffer();
sb.append("aaa");
76、 如何使用java讀寫系統屬性?
讀:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLlR2bjlHcvN2LcNXZnFWbp9CXt92YuM3ZvxmYuNmLu9Wbt92Yvw1LcpDc0RHaiojIsJye.gif)
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLlR2bjlHcvN2LcNXZnFWbp9CXt92YuM3ZvxmYuNmLu9Wbt92Yvw1LcpDc0RHaiojIsJye.gif)
寫:
system.setproperties(props);
77、 簡述properties檔案的結構和基本用法
結構:擴充名為properties的檔案,内容為key、value的映射,例如“a=2”
用法:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLlR2bjlHcvN2LcNXZnFWbp9CXt92YuM3ZvxmYuNmLu9Wbt92Yvw1LcpDc0RHaiojIsJye.gif)
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLlR2bjlHcvN2LcNXZnFWbp9CXt92YuM3ZvxmYuNmLu9Wbt92Yvw1LcpDc0RHaiojIsJye.gif)
78、 什麼是接口?接口的定義規則?
接口是抽象方法和常量值的定義的集合。從本質上講,接口是一種特殊的抽象類,這種抽象類中隻包含常量和方法的定義,而沒有變量和方法的實作。
public interface tt {
public void output( );
public int tt( );
79、 接口的作用?為什麼使用接口?
多重繼承
封裝、隔離
功能,實作的分離
多态
便于後期維護
接口是可插入性的保證。
80、 什麼是多重接口
就是一個類實作多個接口
81、 描述接口的基本思想?
封裝 隔離
接口及相關機制的最基本作用在于:通過接口可以實作不相關類的相同行為,
而不需考慮這些類之間的層次關系。
根據接口可以了解對象的互動界面,而不需了解對象所屬的類。
面向對象程式設計講究“提高内聚,降低耦合”。
82、 如何在代碼中使用接口?
public class mycast implements tt{
public void output( ){}
public int tt( ){
return 0;
83、 舉例說明如何把接口當作類型使用
public interface animal(){
public void tt( );
public class dog implements animal{
public void tt ( ){}
animal ani = new dog();
84、 如何選擇接口和抽象類?為什麼?
優先選用接口,盡量少用抽象類
在下列情況下選擇抽象類:需要定義子類的行為,又要為子類提供共性的功能。
85、 什麼是異常,異常的分類?
程式中導緻程式中斷的一些情況叫做異常,一般程式員可以處理。
異常分為運作時異常和非運作時異常(一般異常)
運作時異常是指因設計或實作方式不當導緻的問題。也可以說,是程式員的原因導緻的,本來可以避免發生的情況。例如:bufferoverflowexception, classcastexception,indexoutofboundsexception,arithmeticexception。出現這些異常的代碼不需要try塊包圍。
非運作時異常是指除運作時異常以外所有的異常,出現這些異常的代碼必須用try塊包圍。例如:filenotfoundexception,eofexception,
86、 簡述處理異常的兩種方式?
抛出(throws)和catch語句處理
87、 簡述try塊的功能和規則
try塊内部一般寫一些程式設計人員認為可能會出現異常的代碼,使程式運作時不會因為出現異常而中斷。
88、 簡述catch塊的功能和規則
功能:可以截獲所聲明的異常,并在語句塊内對其進行處理
規則:catch(exeption e){
e.printstacktrace( );
89、 簡述finally塊的功能和規則
finally塊一般寫一些不論是否發生異常都必須執行一次的代碼
90、 簡述throw和throws的功能和使用方法
throw 指程式設計人員主動抛出一個異常
throw new nullpointerexeption( );
throws指程式遇到異常情況自動的被動抛出一個異常
public void test( ) throws exeption{}
91、 異常的分類?
錯誤(error): jvm 系統内部錯誤、資源耗盡等嚴重情況,程式員不可控制
例外(exception):其它因程式設計錯誤或偶然的外在因素導緻的一般性問題,程式可以控制
92、 什麼是預定義異常
java程式中預先定義好的異常叫做預定義異常
93、 簡述自定義異常的規則
寫一個類繼承exception
使用者自定義異常通常屬exception範疇,依據慣例,應以exception結尾,應該由人工建立并抛出。
94、 什麼是斷言?
95、 如何使用斷言?舉例說明
一種是assert<<布爾表達式>>;另一種是assert<<布爾表達式>>:<<細節描述>>。
assert a= =10 : "這裡a等于10";
1、 什麼是集合?什麼是元素?
可以包含其他對象的簡單對象就叫集合
集合架構中所包含的對象就叫做元素
2、 描述出java集合架構中集合的接口關系
collection----set和list
set----hashset和sortedset
list----arraylist和linkedlist
map----hashmap、sortedmap和treemap
3、 代碼示例:collection接口的使用,包括如何定義、初始化、指派、取值、修改值除值
collection col = new arraylist();
string oldvalue = "abcd";
string newvalue = "1234";
//增加
col.add(oldvalue);
iterator it = col.iterator();
while(it.hasnext()){
//取值
string str = (string)it.next();
if(str.equals(oldvalue)){
//删除
col.remove(oldvalue);
//修改
col.add(newvalue);
4、 代碼示例:list接口的使用,包括如何定義、初始化、指派、取值、修改值、删值
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLlR2bjlHcvN2LcNXZnFWbp9CXt92YuM3ZvxmYuNmLu9Wbt92Yvw1LcpDc0RHaiojIsJye.gif)
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLlR2bjlHcvN2LcNXZnFWbp9CXt92YuM3ZvxmYuNmLu9Wbt92Yvw1LcpDc0RHaiojIsJye.gif)
5、 代碼示例:set接口的使用,包括如何定義、初始化、指派、取值、修改值、删值
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLlR2bjlHcvN2LcNXZnFWbp9CXt92YuM3ZvxmYuNmLu9Wbt92Yvw1LcpDc0RHaiojIsJye.gif)
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLlR2bjlHcvN2LcNXZnFWbp9CXt92YuM3ZvxmYuNmLu9Wbt92Yvw1LcpDc0RHaiojIsJye.gif)
6、 代碼示例:map接口的使用,包括如何定義、初始化、指派、取值、修改值、删
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLlR2bjlHcvN2LcNXZnFWbp9CXt92YuM3ZvxmYuNmLu9Wbt92Yvw1LcpDc0RHaiojIsJye.gif)
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLlR2bjlHcvN2LcNXZnFWbp9CXt92YuM3ZvxmYuNmLu9Wbt92Yvw1LcpDc0RHaiojIsJye.gif)
7、 描述list接口、set接口和map接口的特點
list接口中的對象按一定順序排列,允許重複
set接口中的對象沒有順序,但是不允許重複
map接口中的對象是key、value的映射關系,key不允許重複
8、 如何給集合排序?
實作comparable接口
1、 什麼是流?可畫圖說明
流是要傳輸的資料在源和目的地之間運作的軌迹。
2、 描述i/o流的基本接口和類的結構
3、 代碼示例:使用url流,讀取網頁代碼
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLlR2bjlHcvN2LcNXZnFWbp9CXt92YuM3ZvxmYuNmLu9Wbt92Yvw1LcpDc0RHaiojIsJye.gif)
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLlR2bjlHcvN2LcNXZnFWbp9CXt92YuM3ZvxmYuNmLu9Wbt92Yvw1LcpDc0RHaiojIsJye.gif)
4、 什麼是unicode?
是一種字元的編碼方式,占16位位元組,java 技術使用 unicode 來表示字元串和字元。
5、 代碼示例:如何使用reader和writer來進行輸入輸出
//writer寫入操作
fileoutputstream fos=new fileoutputstream("a.txt");
outputstreamwriter osw=new outputstreamwriter(fos);
bufferedwriter bw=new bufferedwriter(osw);
bw.write("歡迎來到java快車");
bw.close();
//reader讀取操作
fileinputstream fis=new fileinputstream("a.txt");
inputstreamreader isr=new inputstreamreader(fis);
bufferedreader br=new bufferedreader(isr);
string str=br.readline();
system.out.println(str);
6、 什麼叫保持?什麼是可序列化?如何實作可序列化?
将一個對象存放在某種類型的永久存儲器上(比如硬碟,CD光牒,軟碟等),稱為保持。
辨別一個類可以被持久化,叫序列化,也叫串行化或持久化。表示這個類中的資料可以按流式輸出。
實作可序列化的方法:實作java.io.serializable接口。
7、 代碼示例:如何讀寫對象流
//讀
try {
string str = "123";
fileoutputstream f = new fileoutputstream("test.txt");
objectoutputstream s = new objectoutputstream(f);
s.writeobject(str);
f.close( );
}catch(exception e) {
e.printstacktrace( );
//寫
fileinputstream f = new fileinputstream("test.txt");
objectinputstream s = new objectinputstream(f);
str =(string)s.readobject( );
}catch(exception e){
8、 簡述file類的基本功能
處理檔案和擷取檔案資訊;檔案或檔案夾的管理。
概括一句話就是:除了讀寫檔案内容其他的都可以做。
9、 代碼示例:如何使用随機檔案讀寫類來讀寫檔案内容
rw表示檔案時可讀寫的
try{
randomaccessfile f = new randomaccessfile("test.txt", "rw");
long len = 0l;
long alllen = f.length();
int i = 0;
while (len < alllen) {
string s = f.readline();
if (i > 0) {
col.add(s);
}
i++;
//遊标
len = f.getfilepointer();
}
}catch(exception err){
err.printstacktrace();
寫:
try{
stringbuffer buffer = new stringbuffer("\n");
iterator it = col.iterator();
while (it.hasnext()) {
buffer.append(it.next() + "\n");
f.writeutf(buffer.tostring());
err.printstacktrace();
10、 代碼示例:如何使用流的基本接口來讀寫檔案内容
datainputstream in =
new datainputstream(
new bufferedinputstream(
new fileinputstream("test.java")
)
);
string currentline=null;
while ((currentline = in.readline()) != null){
system.out.println(currentline);
}catch (ioexception e){
system.err.println("error: " + e);
1、 什麼是線程?
輕量級的程序
2、 線程的三個部分是?
處理機
代碼
資料
3、 為什麼使用多線程
使ui響應更快
利用多處理器系統
簡化模組化
4、 代碼示例:java中實作多線程的兩種方式,包括如何定義多線程,如何使用多線程
實作runnable接口
class thread1 implements runnable{
public void run( ){
//run裡一般寫一個while(true)循環
system.out.println("runnable");
public class test{
public static void main(string[] a){
thread1 r = new thread1();
thread t1 = new thread(r);
thread t2 = new thread(r);
t1.start();
t2.start();
繼承thread
class thread2 extends thread{
public void run(){
system.out.println("extends");
thread t = new thread2();
t.start();
5、 如何實作線程的排程?如何暫停一個線程的運作
排程用wait和notify,
----
sleep()
6、 什麼是線程的優先級
判斷哪個線程先執行的級别
7、 簡述sleep方法和wait方法的功能和差別
sleep是讓線程休眠一段時間
wait是讓線程挂起
8、 什麼是守候線程
隐藏在背景持續運作的線程
9、 什麼是臨界資源
指多個線程共享的資源
10、 什麼是互斥鎖,java中如何實作
用來保證在任一時刻隻能有一個線程來通路臨界資源的那個标記
在java中使用
用在對象前面限制一段代碼的執行
用在方法聲明中,表示整個方法為同步方法。
11、 什麼是死鎖?如何避免?
如果程式中有多個線程競争多個資源,就可能會産生死鎖。當一個線程等待由另一個線程持有的鎖,而後者正在等待已被第一個線程持有的鎖時,就會發生死鎖。
要避免死鎖,應該確定在擷取多個鎖時,在所有的線程中都以相同的順序擷取鎖。盡量少用臨界資源。
12、 簡述wait和notify,notifyall的使用
被鎖定的對象可以調用wait( )方法,這将導緻目前線程被阻塞并放棄該對象的互斥鎖,即解除了wait( )方法的目前對象的鎖定狀态,其他的線程就有機會通路該對象。
notify使等待隊列上的一個線程離開阻塞狀态
notifyall使等待隊列上的所有線程離開阻塞狀态
13、 什麼是url?基本的格式是?
統一資源定位器
http://www.163.com:port
14、 簡述ip,port,tcp的基本功能
ip代表網絡位置
port代表端口号
tcp可保證不同廠家生産的計算機能在共同網絡環境下運作,解決異構網通信問題,是目前網絡通信的基本協定
15、 簡述java網絡模型的基本功能
描述服務端和用戶端的連接配接過程
16、 簡述java網絡程式設計究竟做些什麼?如何做?
1.建立連接配接
2.準備輸出的資料,流式輸出
3.流式輸入,程式設計業務需要的格式
4.關閉連接配接
伺服器配置設定一個端口号。如果客戶請求一個連接配接,伺服器使用accept( )方法打開socket連接配接。
客戶在host的port端口建立連接配接。
伺服器和客戶使用inputstream和outputstream進行通信。
17、 代碼示例:基于socket程式設計
serversocket s = new serversocket(8888);
while (true) {
socket s1 = s.accept();
outputstream os = s1.getoutputstream();
dataoutputstream dos = new dataoutputstream(os);
dos.writeutf("hello," +s1.getinetaddress() + "port#" + s1.getport() + "\nbye!");
dos.close();
s1.close();
}catch (ioexception e) {
system.out.println("程式運作出錯:" + e);
18、 tcp和udp差別
tcp(傳輸控制協定)和udp(使用者資料報協定)是傳輸層協定
tcp是面向連接配接的可靠資料傳輸協定,能保證傳輸内容的完整和準确;資料傳輸的輔助開銷大,效率低
udp: 是無連接配接的,不可靠地傳輸協定,不能保證傳輸内容的完整和準确,對資訊的适時要求比較高
1、 什麼是設計模式?
就是經過實踐驗證的用來解決特定環境下特定問題的解決方案。
2、 設計模式用來幹什麼?
尋找合适的對象
決定對象的粒度
指定對象的接口
描述對象的實作
運用複用機制
重複使用經過實踐驗證的正确的,用來解決某一類問題的解決方案來達到減少工作量、提高正确率等目的
3、 什麼是對象粒度
對象中方法的大小就是粒度
4、 基本的java程式設計設計應遵循的規則?
面向接口程式設計,優先使用對象組合
5、 設計模式的應用範圍
所能解決的特定的一類問題中
6、 簡述什麼是單例模式,以及解決的問題,應用的環境,解決的方案,應用時應注意什麼?
解決的問題:在任何時間内隻有一個類執行個體存在的模式。
應用環境:需要有一個從中進行全局通路和維護某種類型資料的區域的環境下使用單例模式。
解決方案:保證一個類隻有一個類執行個體存在。
本質:控制執行個體的數量。
注意:要合理的使用單例,避免單例成為瓶頸。
7、 代碼示例:單例模式的兩種實作方法,并說明優缺點
private static test test = new test();
public test(){
public static test getinstance(){
return test;
private static test test = null;
private test(){
public static test getinstance(){
if(test==null){
test = new test();
return test;
第一種方式:裝載類的時候就建立類的執行個體,用空間換時間。
第二種方式:延遲裝載,不需每次都建立一個類執行個體,而隻是在第一次使用時建立,有效的利用資源,用時間換資源。
8、 簡述什麼是工廠模式,以及他解決的問題,應用的環境,解決的方案,模式的本質
利用工廠來解決接口選擇的問題的模式。
應用環境:當一個類無法預料要建立哪種類的對象或是一個類需要由子類來指定,建立的對象時,就需要用到工廠模式。
解決方案:定義一個建立對象的類,在類的方法中決定具體執行個體化哪一個類。
本質:就是根據不同的情況來選擇不同的實作類,重在選擇。
9、 代碼示例:工廠模式的實作方法
單獨是使用工廠:
public class factory{
public static sample creator(int which){
if (which==1){
return new samplea();
}else if (which==2)
return new sampleb();
工廠+單例:
public class myfactory{
public static myfactory f = null;
public myfactory(){
public static myfactory getinstance(){
if(f==null){
f=new myfactory();
}
public dbdao getdao(){
return new dbdaoimpl();
}
10、 簡述什麼是值對象模式,以及他解決的問題,應用的環境,解決的方案,模式的本質
用來把一組資料封裝成一個對象的模式
解決問題:在遠端方法的調用次數增加的時候,相關的應用程式性能将會有很大的下降
解決方案:使用值對象的時候,可以通過僅僅一次方法調用來取得整個對象,而不是使用多次方法調用以得到對象中每個域的數值
本質:封裝資料。
11、 代碼示例:值對象模式的實作方法
步驟:
public class usermodel{
private string userid;
private string username;
public void setuserid(string id){
this.userid = id;
public string getuserid(){
return userid;
public void setusername(string name){
this.username = name;
public string getusername(){
return username;
12、 簡述什麼是dao模式,以及他解決的問題,應用的環境,解決的方案,模式的本質
資料通路對象
解決方案:将資料通路邏輯抽象為特殊的資源,也就是說将系統資源的接口從其底層通路機制中隔離出來;通過将資料通路的調用打包,資料通路對象可以促進對于不同資料庫類型和模式的資料通路。
本質:分層,是系統元件和資料源中間的擴充卡。(一層屏蔽一種變化)
13、 代碼示例:dao模式的實作方法
14、 什麼是架構?架構的優點?
架構是能夠完成一定功能的半成品
2.架構都是以接口的形式出現
3.應該了解架構完成的功能、架構的api接口、架構的功能是怎麼實作的
15、 什麼是開放-封閉法則(ocp)
可擴充但是不可以更改已有的子產品
對擴充是開放的,對修改是封閉
16、 什麼是替換法則(lsp)
使用指向基類(超類)的引用的函數,必須能夠在不知道具體派生類(子類)對象類型的情況下使用。
17、 如何綜合使用我們學過的設計模式來建構合理的應用程式結構
是采用接口進行隔離,然後同時暴露值對象和工廠類,如果是需要資料存儲的功能,又會通過dao 模式去與資料存儲層互動。
18、 建構常用的合理的java應用包結構
ui(表現層)
business--factory,ebi,ebo
dao--factory,dao,impl