第一篇:java學習總結(基礎加web)
Java考試題
Java基礎部分
1、請簡要描述oop的主要特征,并談談對這些特征的理解。
Oop主要特征:抽象,封裝,繼承,多態; 抽象:忽略與當前主題無關的部分,抓住重點
封裝:使用方法將類的屬性隱藏起來,控制用戶對類的修改和數據訪問的程度,繼承:子類繼承父類的方法和屬性,使程序結構清晰,提高挨罵復用,一種is a 的關系。多態:不同對象對統一消息進行回應。一種多種同名方法共存
2、char型變量中能不能存貯一個中文漢字?為什么? 能,java中編碼方式是unicode,char占2個字節,一個漢字剛好兩個字節所以可以
3、short s1 = 1;s1 = s1 + 1;有什么錯? short s1 = 1;s1 += 1;有什么錯?
錯,需要強制轉型為short,+=是java定義的運算符故編譯是jvm會自動處理
4、請說明break,continue,return的作用。
Break,可用于switch分支一條case語句結束以后,可用于跳出循環 Contiue :用于跳出里層循環
Return :也可用于終止循環,有返回類型的方法是用與返回
5、用abstract修飾符修飾的類和方法有什么特點?
修飾的類為抽象類,包含有抽象方法,修飾的方法,為抽象方法只有方法體而沒有具體實現
6、protect 修飾的方法與不加任何修飾的方法有什么不同? 加上為修飾后訪問為同一包中和該類的子類,不加為默認的包訪問權限。
7、什么是對象?什么是類?它們之間有什么關系
對象:具有某些屬性和行為的名詞,類:具有相同屬性以及相同行為的一組對象,關系:對象是類的實例化
8、請描述對象的初始化順序。
對象初始化順序:加載類,分配內存空間,清零,加載變量然后方法。先父類靜態變量,父類靜態塊,子類靜態成員變量,子類靜態塊,父類非靜態變量,父類構造函數,子類非靜態變量,子類構造函數
9、什么是繼承?繼承的特性可給面向對象編程帶來什么好處?
繼承:子類繼承父類的方法和屬性,使程序結構清晰,提高代碼復用,一種is a 的關系。
10、什么是方法的覆蓋? 與方法的重載有何不同?方法的覆蓋與屬性的隱藏有何不同?
方法覆蓋:子類重寫與父類同名的方法,擁有相同的參數名和返回值,多態的一種體先,重載:具有相同的方法名但是有不同的返回類型或參數。
屬性隱藏:子類定義與父類同名的屬性,父類的屬性就會被隱藏。
11、請簡述接口和抽象類的區別。并分別舉例說明應用場景。
接口:接口中全是抽象方法,若一個類實現這個接口就必須是先接口中所有的方法。關鍵字implements和interface 抽象類:用關鍵字abstract修飾,包含抽象方法(僅有方法體而沒有具體實現),可以包含普通方法和構造方法,使用時不能用new創建實例
12、說出ArrayList,Vector, LinkedList的存儲性能和特性
ArrayList和Vector都是集合,按數組的方式存儲,查找比較快,vector是線程安全的,但效率上低于arraylist,Linkedlist:鏈式集合雙向鏈表,按序號索引數據進行向前向后遍歷,所以插入和刪除數據最快。
13、請說明Collection和Collections的區別。
Collection是一個j集合的接口,set和list都實現這個接口
Collection:是針對集合類的一個幫助類,他提供一系列靜態方法實現對各種集合的搜索、排序、線程安全化等操作
14、Set里的元素是不能重復的,那么用什么方法來區分重復與否呢?
hashset我們自己區分的時候利用迭代器 iterator,內部利用hashcode然后equals方法實現區分是否重復。
15、Error和Exception它們繼承自哪個類?有什么區別? 繼承Throwable這個類,區別:error錯誤,一般來說很難回復,如內存溢出,exception,則為程序正常運行時永遠不會發生的的異常,程序員需要處理。
16、什么情況出現NullPointerException異常?怎樣處理?
使用一個對象是,對象為null,在適用對象前進行判斷
17、請列舉Java類中的方法修飾符,并簡述其含義。
18、try {}里有一個return語句,那么緊跟在這個try后的finally {}里的code會不會被執行,什么時候被執行,在return前還是后?
會,在return前
19、Java中如何讀寫文件,請寫出Java代碼實現讀寫文件的基本過程。20、常見的xml解析方式有哪些?區別是什么?
Sax,dom:dom一次性全部讀取xml文件,創建一個一顆文檔樹,故讀取大文件是熟讀緩慢
21、簡要描述數據庫連接池的工作機制,并列出使用數據庫連接池的優點。
程序運行時,創建一定數量的池連接,比在以后維持不少于這個數量的連接。提高程序運行的效率
22、對于一個Linux命令,可以通過哪些方法了解其具體的使用方法。
Help,info,man,使用格式 help ls;ls –help;info ls;man ls;
23、Linux系統中,請簡要描述文件和目錄的訪問權限的9個權限位的作用,請列舉修改權限的命令。
Xxxxxxxxx;前三位表示所有者的可讀可寫可操作權限,中間所有者的所在用戶組;后三位是其他用戶,Chmod 777 要更改權限的對象。
24、數據庫中,什么叫視圖(View),什么叫索引(Index)?什么情況下會用到索引,視圖的主要作用有哪些。
視圖 :一張虛擬的邏輯表。并不包含實際的數據,相當于一個窗口,可通過該窗口對數據進行查詢和修改。作用:使復雜查詢變得容易,提供數據獨立性,限制數據訪問。索引:幫助查找數據。用指針加速取回數據。
Java web部分
1、請簡述對J2EE的理解。
由sun公司提供的一種企業級基于組件的java開發規范。J2EE定義了13種組件如servlet,jsp,jdbc等。
2、簡要描述對mvc的理解,并舉例說明在項目中的實現思路
Mvc是一種開發模式,優點:耦合性低,可維護性高。,分別代表三個單詞:Modle,Veiw,Control,模型層控制程序的業務邏輯,視圖層,是接受用戶輸入和顯示數據給用戶與用戶交互,控制層:控制程序走向,模型層與視圖層的中間橋梁。
3、Javascript有什么特點?并說明其主要用途。
Javascript: 一種腳本語言,是基于事件的面向對象語言,弱數據類型,安全,運行速度快,有強大的函數庫,主要用途:客戶端驗證用戶輸入,給用戶動態的提示。美化頁面。
4、什么是servlet容器?它的作用是什么? Servlet容器:用于創建和維護servlet,提供一個運行環境給servlet的東西。
5、請描述servlet的生命周期以及在每個階段所調用的方法。
實例化:有容器進行。初始化:調用init()方法。處理請求:根據請求方式的不同調用service()中的不同方法如:doget,dopost。銷毀:調用destroy方法。
6、怎樣在web.xml文件中注冊一個servlet?
主要兩大塊:
7、請描述在servlet中forward和redirect的區別與聯系。
Forword:請求轉發,服務器跳轉,一次請求,地址欄不改變,request對象中的信息不丟失。Redirect:請求重定向,客戶端跳轉,兩次請求,地址欄改變,request對象中的信息丟失。
8、請描述jsp的執行過程。
Jsp執行經過兩個階段:
1、轉譯階段,將jsp轉譯為servlet,2、編譯servlet,生成.class文件,3、調用.class文件生成html頁面顯示給用戶。
9、如何執行一個線程安全的JSP?
<%@ page isThreadSafe=true%>
10、Jsp的9個內置對象是什么?他們分別有什么作用。
Jsp九大內置對象:page,request,response,session,application,pagecontext,config,exception,out。四個域對象:out輸出信息,e:處理異常,config:拿到一些配置信息。
11、請列舉出至少5個request對象的常用的方法。
12、Jsp的四個域對象是什么?他們的“域”指的是什么?
Page,requerst,session、,application,域表示有效時間,及在什么范圍內有效。
13、請列列舉四個jsp 指令,并說明它們的含義。
Page:設置頁面屬性,taglib,:標簽指令,include:包含指令。
14、Jsp有哪些動作?作用是什么?
15、請描述Jsp和servlet的區別與聯系。
。。。。
16、請說出在jsp中靜態包含和動態包含技術的異同點。
靜態是先包含再執行,動態為先執行在編譯。
17、在 JSP 開發過程中,對于同一個用戶的會話,要想在不同的頁面之間共享數據,可以有幾種選擇?請一一列舉
Request,session,application,cookie,重寫地址欄,隱藏域。
18、請說明過濾器的工作原理以及重要的接口。
過濾器:當一個請求到達是過濾器會進行攔截,服務器響應消息時也會同樣攔截。根據編寫的故偶濾器確定是否放行和是否要做相應的處理。重要接口:filter,filterchain,filterconfig。
19、什么是監聽器?它的作用是什么,請舉例說明。
監聽器是:專門用于對其他對象身上發生的事件或狀態改變進行監聽和相應處理的對象,當被監視的對象發生情況時。監聽域對象自身的創建和銷毀的事件監聽器 監聽域對象中的屬性的增加和刪除的事件監聽器
監聽綁定到 HttpSession 域中的某個對象的狀態的事件監聽器
20、使用http傳輸協議將客戶端的請求傳送至服務器端最常用的是哪兩種方式,他們的區別是什么。
Get,post,Get:方式相對來說速度較快,當傳輸的數據量要小于1kb,傳輸的信息會在地址欄顯示,安全性存在隱患。Post:比get方式安全,傳遞的數據量也比之要大。
21、簡述struts2的工作流程。
Struts2:核心為一個過濾器,當一個請求到達的時候,服務器對之進行攔截,參考struts.xml文件,尋找到對應配置的action,尋找到action類,對請求做出相應的處理。處理完后返回一個String,參考struts.xml文件中的配置的result顯示相應的頁面給用戶
22、Struts2配置文件struts.xml中有哪些常用的配置項,它們分別有什么作用?
23、請說明在ognl表達式中#、$、%的作用。
Ognl表達式:#是取非valuestack中的值時使用,如request?.還有操作集合是時也可以用到。
$配置文件中那取action中的值是會使用到。國際化資源文件中引用ognl表達式 %當強制聲明為ognl表達式或字符串是會使用到
24、寫出3組常見的Struts標簽,并簡述其作用。
25、value stack是什么?它的作用是什么?在頁面中怎樣訪問?
Struts的值棧,存放一些請求響應信息,直接訪問。
26、請簡要描述Struts2中攔截器的主要作用、配置及執行流程。
攔截器,servlet中的過濾器相似,當客戶端請求到達是經過攔截器,響應是也會經過,是一種aop的思想。配置:interceptor Servlet是線程不安全的,采用多線程的方式調用service方法。CGI就是單線程,所以servlet比之效率高。Servlet實現單線程的方法:實現singleThreadmodel。
創建線程的兩種方式:繼承Thread這個類,或實現runnable這個接口,啟動線程:statrt(),啟動后會調用run方法。Sleep和wait()區別:sleep不會釋放鎖。Wait()釋放鎖,必須有notify()喚醒。多線程中實現線程安全:利用關鍵字synchronized,一把鎖,實現同步。死鎖的條件:互斥條件,不可剝奪資源,循環等待,請求與保持條件。反射:加載驅動,Class.forName(“類的完整類名”)通過一個class對象拿到其相應的方法屬性。組件:就是對數據和方法進行了簡單封裝。
第二篇:JAVA WEB 基礎考試題
一、填空題(每空2分,共30分)
1、在tomcat上發布javaweb應用時的默認目錄是__webapps___目錄。
2、javaweb應用的部署描述符是指
web.xml__ 文件。
3、在tomcat中訪問helloapp應用的login.html文件時,在瀏覽器地址欄應寫的url為:__http://localhost:8080/helloapp/login.html___。
4、Servlet容器啟動每一個web應用時,都會為它創建一個唯一的___ServletContext__對象,該對象和web應用有相同的生命周期。
5、請求轉發源組件的響應結果___不會__發送到客戶端,包含__會__發送到客戶端。(填“會”或“不會”)
6、jsp中實現請求轉發的標記為:___
7、在JSP中,request 內置對象代表請求消息,response 內置對象代表響應消息,___session_內置對象代表會話。
8、如果使用第四類jdbc驅動器連接數據庫,jar文件的存放位置為“web應用/_WEB-INF /lib_______”。
9、Servlet容器為每一個HttpSession對象分配一個唯一標識符,叫做___SessionID___。
10、javaweb在mvc設計模式下,___javabean___是模型,___jsp是視圖,__servlet__是控制器。
二、選擇題(每題2分,共30分)
1、下面哪一個選項不是http響應的一部分?(c)
a)響應頭 b)響應正文 c)協議版本號 d)狀態行
2、http請求及響應的正文部分可以是任意格式的數據,要保證接收方能看得 懂發送方發送的數據,http協議采用(d)協議來規范正文的數據格式 ? a)FTP b)TCP c)HTTP d)MIME
3、Servlet API 由哪兩個包組成?(兩個答案)(ac)a)javax.servlet b)javax.servlet.jsp c)javax.servlet.http d)java.servlet
4、一個servlet的生命周期不包括(b)方法? a)init()方法
b)invalidate()方法 c)service()方法 d)destroy()方法
5、HttpServletRequest對象的(c)方法能夠獲取一個表單參數的值: a)getQuaryString()b)getPathInfo()c)getParameter()d)getAttribute()
6、下面對servlet中重定向說法描述錯誤的是(d)
a)使用的是HttpServletResponse接口的sendRedirect()方法 b)源組件的響應結果不會發送給客戶端 c)sendRedirect()方法后的代碼仍會執行
d)源組件和目標組件共享ServletRequest對象
7、jsp指令不包括(c)a)page指令 b)taglib指令 c)import指令 d)include指令
8、jsp中java表達式的語法格式為:(a)a)<%= %> b)<%!%> c)<%@ %> d)<%
%>
9、可以執行請求轉發的操作是(d)。a)
jsp中response內置對象的sendRedirect()方法 b)
c)
RequestDispatcher對象的include()方法 d)
RequestDispatcher對象的forward()方法
10、(d)內置對象可以處理jsp頁面運行中的錯誤或者異常 a)pageContext b)page c)session d)exception
11、下面對jdbc api描述錯誤的是(d)
a)DriverManager接口的getConnection()方法可以建立和數據庫的連接 b)Connection接口的createStatement()方法可以創建一個Statement對象 c)Statement接口的executeQuery()方法可以發送select語句給數據庫 d)ResultSet接口表示執行insert語句后得到的結果集
12、JavaBean的scope取什么值可使該javabean被多個用戶共享,即和web 應用有相同的生命周期?(d)a)
page b)
request c)
session d)
application
13、下面哪個不是JSP中和javabean相關的標記?(b)a)
14、以下關于EL和JSTL說法錯誤的是?(d)a)
EL是一種簡潔的數據訪問語言 b)
EL表達式基本形式:${var} c)
JSTL的全稱是JavaServer Pages Standard Tag Library d)
JSTL只有一個Core核心標簽庫
15、所有的servlet過濾器類都必須實現(a)接口。a)
javax.servlet.Filter b)
javax.servlet.ServletConfig c)
javax.servlet.ServletContext d)
javax.servlet.Servlet
三、編程題(共40分)
1、第一個Servlet1文件,讀取兩個請求參數first和second,將其轉換為int值后相加,和存放在請求范圍內,然后把請求轉發第二個Servlet2.。第二個Servlet2文件(url為output),向客戶輸出Servlet1計算的結果。根據注釋補充下列代碼。(23分)
public class Servlet1 extends HttpServlet {
public void service(ServletRequest request,ServletResponse response)
throws ServletException, IOException {
//讀取兩個請求參數,并將其轉換為int值
int first = Integer.valueOf(request.getParameter(“first”)).intValue();________(3分)
int second=Integer.valueOf(request.getParameter(“second”)).intValue();___(3分)
//將兩個數字相加
int sum=first+second;_____(3分)
//在request對象中添加sum屬性
_
request.setAttribute(“sum”, String.valueOf(sum));______(3分)
/*把請求轉發給Servlet2 */
_
ServletContext context = getServletContext();
RequestDispatcher dispatcher =context.getRequestDispatcher(“/output”);
dispatcher.forward(request, response);_____(5分)
} }
public class Servlet2 extends HttpServlet {
public void service(ServletRequest request,ServletResponse response)
throws ServletException, IOException {
//讀取請求范圍內Servlet1計算出的和
_ String sum=(String)request.getAttribute(“sum”);_________(3分)
//向客戶端輸出和
PrintWriter out=response.getWriter();
out.print(“the sum is ”+sum);_________(3分)
} }
2、寫一個JSP訪問Access數據庫的user表,將所有的記錄顯示出來;ODBC數據源名為test,驅動類名為:“sun.jdbc.odbc.JdbcOdbcDriver”,連接數據庫的url為:“jdbc:odbc:test”。user表中name字段為文本類型,password為數字類型。連接數據庫代碼(6分),發送查詢語句代碼(4分),處理結果集代碼(7分)(共17分)name password 張三 123 李四 456 王五 789
第三篇:java web總結
Java Web 總結
一
Servlet的繼承層次很多,但是我們web開發常用的也就是javax.servlet.http.HttpServlet這個類,我們常用的 兩個請求方法是doGet(),doPost(),還有從父類繼承過來的方法init()初始化,destroy()Servlet銷毀時會被調 用,getServletConfig()獲得ServletConfig對象,getServletInfo()返回有關Servlet的信息,包括作 者、Servlet版本等。
Servlet的訪問必須在web.xml,怎么配置會在下面舉例。常用方法:
1、request.setCharacterEncoding(“utf-8”);//設置用post傳遞給服務器的參數編碼方式
2、response.setContentType(“text/html;charset=utf-8”);//設置發送給瀏覽器的內容編碼
3、HttpSession session = request.getSession();//獲得session會話session.setAttribute(“a”,“b”);//給session作用域中存值可以這樣取值:session.getAttribute(“a”);
4、ServletContext context = this.getServletContext();整個web應用對象,或者用ServletConfig對象.getServletContext()獲得
String str = context.getInitParameter(“encoding”);//獲得全局參數
5、ServletConfig config = this.getServletConfig(“p1”);//獲得某個Servlet專用的配置對象
String str =config.getInitParameter(“p2”);//獲得某個Servlet的專有配置參數
6、String str = request.getParameter(“s”);//獲得頁面傳過來的參數
7、String[] sa = request.getParameterValues(“sa”);//獲得字符串數組
8、request.setAttribute(“r”,“寶寶”);//往request作用域中存值。在頁面可以${r}這樣取出寶寶。
9、PrintWriter out = response.getWriter();//獲得標準輸出流,此流內部做了處理直接會輸出給瀏覽器。
10、request.getRequestDispatcher(“/index.jsp”).forward(request,response);//轉發response.sendRedirect(“index.jsp”);跳轉
二
連接數據庫的基本過程
加載驅動程序
創建連接對象
創建語句對象
編寫SQL語句
使用語句對象執行SQL語句
如果有結果集對結果集進行處理
關閉結果集對象(如果有),關閉語句對象,關閉連接對象
如何加載驅動程序
Class.forName(“驅動程序名字”):
如何創建連接
通過DriverManager的getConnection方法,有3個參數,第一個參數是URL,第二個參數是用戶名,第三個參數是口令。
三
HTTP 是一個屬于應用層的面向對象的協議,由于其簡捷、快速的方式,適用于分布式超媒體信息系統。它于1990年提出,經過幾年的使用與發展,得到不斷地完善和 擴展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的規范化工作正在進行之中,而且HTTP-NG(Next Generation of HTTP)的建議已經提出。
HTTP協議的主要特點可概括如下:
1.支持客戶/服務器模式。
2.簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規定了客戶與服務器聯系的類型不同。由于HTTP協議簡單,使得HTTP服務器的程序規模小,因而通信速度很快。
3.靈活:HTTP允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。
4.無連接:無連接的含義是限制每次連接只處理一個請求。服務器處理完客戶的請求,并收到客戶的應答后,即斷開連接。采用這種方式可以節省傳輸時間。
5.無狀態:HTTP協議是無狀態協議。無狀態是指協議對于事務處理沒有記憶
能力。缺少狀態意味著如果后續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在服務器不需要先前信息時它的應答就較快。
第四篇:java web總結
Java Web 總結
1.JSP運行原理
(1)用戶通過客戶端瀏覽器向服務器發送請求。
(2)JSP文件將JSP引擎編譯成Java的class文件,即servlet。
(3)將產生的servlet加載到內存執行。
(4)Servlet的運行結果以HTML(或XML)形式通過web服務器返回客戶端的瀏覽器。
2.web項目設計
(1)公開目錄(2)web_INF目錄(3)Class目錄
3.JSP的基本語法
(1)腳本元素:聲明、腳本段、表達式。
(2)腳本段:<%%>
(3)聲明:<%!%>不會產生任何輸出內容→聲明全局變量。
(4)表達式:<%= %>
(5)EL表達式:${ }
(6)指令元素:<% @ %>不在客戶端可見
(7)page指令、include指令、taglib指令
page指令:language屬性、contentType(text/html)、text/plain application/msword、application/x-msexecl、PageEncoding、info、import屬性.include指令:在JSP頁面中靜態包含一個文件 <@include file=“"%>taglib指令: <%@taglib uri=”標記庫的uri地址“ prefix=”前綴名“%> 指令元素翻譯階段執行,動作元素執行階段被執行。
用
考點:
4.指令與動作的區別(include)
1.執行時間不同
指令<%@ include file=” “%>是偏譯時包含靜態文件
動作
2.引入內容不同
指令<%@include file=”relatirveURI“%>引入靜態文本(html.jsp)。
動作
5.JSP內置對象
Out,request,response,session,application,page,pageContext,exception,config
request客戶端向服務端發送請求。
response用于服務器端封裝JSP處理請求后產生的結果。
response對象的send Redirect(url)方法相當于兩次請求。
而
6.session和cookie的區別
1.存放地點不同
Session存放在服務器端,cookie存放在客戶端的硬盤里
2.存活時間
session隨用戶訪問服務器而產生,隨客戶下線或超時而消失
3.安全性
session存放在服務器端,不能被修改,且隨客戶端瀏覽器的關閉而消失,安全性較好。Cookie存放在客戶端,安全性較差。
7.數據庫
java.sql.Driver
java.sql.DriverManager——加載驅動程序
java.sql.Connetion——表示數據庫連接對象,對數據庫一切操作都在這個基礎上
java.sql.Statement——執行SQL語句和返回結果
java.sql.ResultSet——結果集用來暫時存放數據庫查詢操作結果
8.編寫程序的步驟
1.裝載驅動程序
class.forName(”com.mySQL.jdbc.Driver“)
2.定義所需連接數據庫的地址
String mysqlURL=”jdbc.mysql://host:port/dbName“
3.建立與數據庫的連接
Connection conn=DriverMannager.get Connection(url,”登錄數據庫用戶名“,”
密碼“)
4.聲明并執行SQL語句
5.處理返回的結果
6.關閉對象
String driverStr=”com.mysql.jdbc.Driver“
String connstr=”jdbc:mysql://localhost:3306/book“;
Class forName(driver Str)
Connection conn=DriverManager.getConnection(connstr.”root“.”123“)第4步:建立語句對象
Statement stmt=conn.createStatement()
第5步:聲明并執行SQL語句
String sql=”select*from book“;
ResultSet rs=stmt.executeQuery(sql);
第6步:
Statement接口的3個方法:
1、ResultSet executeQuery(String sql)
2、int execute Update(String sql)
3、boolean execute(String sql)
ResultSet的方法:
1、boolean next()
2、get xxx()
第7歩:rs.close()stmt.close()con.close()
注:關閉資源的順序與打開資源順序恰好相反。
第8步:異常處理
try{.........}catch(SQLExecption ex){.........}
9.Java Bean 組件(可重用)
組件:是一個獨立的模塊,外界可以不了解內部如何實現,只需通過其提供的接口對組件進行訪問即可,組件可重用。
特點:
1、實現代碼重復使用;
2、易編寫,易維護,易使用。
10.Java Bean類的編碼約定
1、類實現了java.io.Serializable接口
2、必須放在某個Package(包)中
3、類中如果有構造方法,那么這個方法是共有的,并且無參數
4、所有屬性都是私有的(private修飾)
5、get XXX:用來獲取屬性,此方法是共有的6、set XXX:用來設置屬性,此方法是共有的7、對于boolean類型的成員變量允許使用“is”代替“get”和“set”
8、類中的普通方法不適合上面的命名規則,但這個方法必是public的。
3個標記:
11.servlet的生命周期
(1)當客戶第一次請求servlet時,servlet被加載到內存 容器會創建servlet實例,并調用其init()方法進行初始化工作。
(2)容器創建請求對象,然后調用servlet的service()方法為客戶提供服務。
(3)當servlet不再被需求時,容器調用servlet的destory()方法將servlet實例銷毀。
12.Servlet開發
引入import.javax.servlet.* 和import.javax,servlet.http.*包
13.Servlet過濾器
Servlet過濾器是一種java組件,它位于客戶端和處理程序之間
Servlet過濾器工作原理
14.Model1和model2
Model1:JSP+JavaBean
Model2:JSP+Servlet+JavaBean
Model1中,jsp頁面實現頁面顯示、業務邏輯和流程控制,數據處理由JavaBean完成。
優點:進行快速和小規模的應用開發時優勢非常明顯。
缺點:不利于web應用的擴展和更新;調試和排錯困難。
Model2中,MVC模式--->模型-視圖-控制器.即把web應用的輸入輸出和處理流程按照Model.View和Controller分成三層。
Model1和Model2的區別:
Model1和Model2實際上就是對采用JSP技術開發的web應用的不同模型的描述。Model1采用JSP+JavaBean技術開發web應用,它比較適合小規模應用的開發,效率較高,易于實現,但由于在JSP頁面中內嵌了大量的Java代碼,以至于當業務邏輯復雜時,代碼可維護性、可擴展性和可重用性就會下降;Model2采用JSP+Servlet+JavaBean技術開發web應用,該模型基于MVC模式,完全實現了頁面顯示和邏輯的分離,它充分利用了JSP和Servlet兩種技術的優點,JSP更適合前臺頁面的開發,而Servlet更擅長服務器端程序的編寫,Model2分工明確,更適合大型項目的開發和管理。
視圖(view)用于與用戶交互,可以用HTML.JSP實現。
15.模型(model)用于表示業務數據和實現業務邏輯,可以用JavaBean實現 控制器(controller)完成流程控制,它接收來自視圖層用戶輸入的數據,并調用相應的模型進行處理,最后選擇合適的視圖去響應用戶。控制層可以用Servlet實現。
優點:MVC模式完全實現了頁面表示和業務邏輯的分離;
MVC優勢之一在于三層各司其職,互不干涉。
缺點:沒有明確的定義。
模型層為JavaBean,實現了數據的表示和業務邏輯,視圖層為JSP頁面,只負責顯示功能。
控制器為Servlet,負責接收用戶的請求,設置JavaBean屬性,調用JavaBean完成業務處理,最后將處理結果交給JSP頁面顯示。
16.自定義標簽
對隱式對象的操作、處理表單、訪問數據庫及其他企業級服務。
自定義標簽種類:
1.不帶有屬性和標簽體:
2.帶有屬性沒有標簽體的標簽:
3.帶有屬性帶有標簽體:
17.EL表達式
基本語法${expr}
功能:對屬性對象的簡明訪問:${user}
對屬性對象的屬性訪問:${customer.firstname}
對屬性集合元素的訪問:對數組和list:${variable[index]}對map:${variable[key]}
對請求參數cookie等的簡單訪問.請求參數${param.custID}
Cookie對象:${cookie.userCookie}
18.”.“操作符和”[ ]“操作符
${user.address}=${user[address]}
訪問數組和集合元素,需使用[ ]
${class[0].name}=${class[0][name]}
${param.username}={%=request.getparameter(”userName“)%}
19.”.“與”[ ]“使用存在差異
1.當訪問的數據中包含一個特殊字符(如:”.“或”_“時),就必須用”[ ]“操作符
2.當動態取值時必須使用”[ ]“操作符,”.“操作符只能取到靜態的值
注:當”[ ]"操作符中的屬性名為常量時必須用''''引起,否則將會當做變量來處理.20.SQL標簽
1.
2.
3.
4.
5.
21.Tomcat的目錄結構及描述:
bin放置啟動和關閉Tomcat的可執行文件和批處理文件
common放置在此目錄中的jar、class文件,可以被此服務器下所有的web應用使用
conf放置Tomcat的主要配置文件
logs放置Tomcat的日志文件
server放置Tomcat管理接口的應用
src放置Tomcat相關的源代碼
temp放置Tomcat臨時文件
webapps 放置Tomcat應用的目錄
work放置JSP頁面翻譯成對應的Servlet類的目錄
第五篇:Java學習_基礎總結
現在學習JAVA的人越來越多!但是學的好的,能用到工作中去的卻很少很少,下面就是我為大家總結歸納的一些JAVA學習基礎,希望大家少走彎路,盡快投入到工作中去!
Java 學習基礎總結歸納!
1、作用域public,private,protected,以及不寫時的區別
答:區別如下:
作用域
當前類
同一package
子孫類
其他package public
√
√
√
√
protected
√
√
√
×
friendly
√
√
×
×
private
√
×
×
×
不寫時默認為friendly
2、Anonymous Inner Class(匿名內部類)是否可以extends(繼承)其它類,是否可以implements(實現)interface(接口)
答:匿名的內部類是沒有名字的內部類。不能extends(繼承)其它類,但一個內部類可以作為一個接口,由另一個內部類實現
3、Static Nested Class 和 Inner Class的不同
答:Nested Class(一般是C++的說法),Inner Class(一般是JAVA的說法)。Java內部類與C++嵌套類最大的不同就在于是否有指向外部的引用上。注: 靜態內部類(Inner Class)意味著1創建一個static內部類的對象,不需要一個外部類對象,2不能從一個static內部類的一個對象訪問一個外部類對象
4、&和&&的區別
答:&是位運算符,表示按位與運算,&&是邏輯運算符,表示邏輯與(and)
5、Collection 和 Collections的區別
答:Collection是集合類的上級接口,繼承與他的接口主要有Set 和List.Collections是針對集合類的一個幫助類,他提供一系列靜態方法實現對各種集合的搜索、排序、線程安全化等操作
6、什么時候用assert
答:assertion(斷言)在軟件開發中是一種常用的調試方式,很多開發語言中都支持這種機制。在實現中,assertion就是在程序中的一條語句,它對一個boolean表達式進行檢查,一個正確程序必須保證這個boolean表達式的值為true;如果該值為false,說明程序已經處于不正確的狀態下,系統將給出警告或退出。一般來說,assertion用于保證程序最基本、關鍵的正確性。assertion檢查通常在開發和測試時開啟。為了提高性能,在軟件發布后,assertion檢查通常是關閉的
7、String s = new String(“xyz”);創建了幾個String Object
答:兩個,一個字符對象,一個字符對象引用對象
8、Math.round(11.5)等於多少? Math.round(-11.5)等於多少
答: Math.round(11.5)==12;Math.round(-11.5)==-11;round方法返回與參數最接近的長整數,參數加1/2后求其floor
9、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;(可以正確編譯)
10、Java有沒有goto
答:java中的保留字,現在沒有在java中使用
11、數組有沒有length()這個方法? String有沒有length()這個方法
答:數組沒有length()這個方法,有length的屬性。String有有length()這個方法
12、Overload和Override的區別。Overloaded的方法是否可以改變返回值的類型
答:方法的重寫Overriding和重載Overloading是Java多態性的不同表現。重寫Overriding是父類與子類之間多態性的一種表現,重載Overloading是一個類中多態性的一種表現。如果在子類中定義某方法與其父類有相同的名稱和參數,我們說該方法被重寫(Overriding)。子類的對象使用這個方法時,將調用子類中的定義,對它而言,父類中的定義如同被“屏蔽”了。如果在一個類中定義了多個同名的方法,它們或有不同的參數個數或有不同的參數類型,則稱為方法的重載(Overloading)。Overloaded的方法是可以改變返回值的類型
13、Set里的元素是不能重復的,那么用什么方法來區分重復與否呢? 是用==還是equals()? 它們有何區別
答:Set里的元素是不能重復的,那么用iterator()方法來區分重復與否。equals()是判讀兩個Set是否相等 equals()和==方法決定引用值是否指向同一對象equals()在類中被覆蓋,為的是當兩個分離的對象的內容和類型相配的話,返回真值
14、給我一個你最常見到的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
15、error和exception有什么區別 答:error 表示恢復不是不可能但很困難的情況下的一種嚴重問題。比如說內存溢出。不可能指望程序能處理這樣的情況 exception 表示一種設計或實現問題。也就是說,它表示如果程序運行正常,從不會發生的情況
16、List, Set, Map是否繼承自Collection接口
答: List,Set是,Map不是
17、abstract class和interface有什么區別
答:聲明方法的存在而不去實現它的類被叫做抽象類(abstract class),它用于要創建一個體現某些基本行為的類,并為該類聲明方法,但不能在該類中實現該類的情況。不能創建abstract 類的實例。然而可以創建一個變量,其類型是一個抽象類,并讓它指向具體子類的一個實例。不能有抽象構造函數或抽象靜態方法。Abstract 類的子類為它們父類中的所有抽象方法提供實現,否則它們也是抽象類為。取而代之,在子類中實現該方法。知道其行為的其它類可以在類中實現這些方法接口(interface)是抽象類的變體。在接口中,所有方法都是抽象的。多繼承性可通過實現這樣的接口而獲得。接口中的所有方法都是抽象的,沒有一個有程序體。接口只可以定義static final成員變量。接口的實現與子類相似,除了該實現類不能從接口定義中繼承行為。當類實現特殊接口時,它定義(即將程序體給予)所有這種接口的方法。然后,它可以在實現了該接口的類的任何對象上調用接口的方法。由于有抽象類,它允許使用接口名作為引用變量的類型。通常的動態聯編將生效。引用可以轉換到接口類型或從接口類型轉換,instanceof 運算符可以用來決定某對象的類是否實現了接口
18、abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized
答:都不能
19、接口是否可繼承接口? 抽象類是否可實現(implements)接口? 抽象類是否可繼承實體類(concrete class)
答:接口可以繼承接口。抽象類可以實現(implements)接口,抽象類是否可繼承實體類,但前提是實體類必須有明確的構造函數
20、構造器Constructor是否可被override
答:構造器Constructor不能被繼承,因此不能重寫Overriding,但可以被重載Overloading
21、是否可以繼承String類
答:String類是final類故不可以繼承
22、try {}里有一個return語句,那么緊跟在這個try后的finally {}里的code會不會被執行,什么時候被執行,在return前還是后
答:會執行,在return前執行
23、用最有效率的方法算出2乘以8等於幾 答:2 << 3
24、兩個對象值相同(x.equals(y)== true),但卻可有不同的hash code,這句話對不對
答:不對,有相同的hash code
25、當一個對象被當作參數傳遞到一個方法后,此方法可改變這個對象的屬性,并可返回變化后的結果,那么這里到底是值傳遞還是引用傳遞
答:是值傳遞。Java 編程語言只有值傳遞參數。當一個對象實例作為一個參數被傳遞到方法中時,參數的值就是對該對象的引用。對象的內容可以在被調用的方法中改變,但對象的引用是永遠不會改變的
26、swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上
答:witch(expr1)中,expr1是一個整數表達式。因此傳遞給 switch 和 case 語句的參數應該是 int、short、char 或者 byte。long,string 都不能作用于swtich
27、ArrayList和Vector的區別,HashMap和Hashtable的區別
答:就ArrayList與Vector主要從二方面來說.一.同步性:Vector是線程安全的,也就是說是同步的,而ArrayList是線程序不安全的,不是同步的二.數據增長:當需要增長時,Vector默認增長為原來一培,而ArrayList卻是原來的一半就HashMap與HashTable主要從三方面來說。一.歷史原因:Hashtable是基于陳舊的Dictionary類的,HashMap是Java 1.2引進的Map接口的一個實現二.同步性:Hashtable是線程安全的,也就是說是同步的,而HashMap是線程序不安全的,不是同步的三.值:只有HashMap可以讓你將空值作為一個表的條目的key或value
28、char型變量中能不能存貯一個中文漢字?為什么? 答:是能夠定義成為一個中文的,因為java中以unicode編碼,一個char占16個字節,所以放一個中文是沒問題的
29、GC是什么? 為什么要有GC
答:GC是垃圾收集的意思(Gabage Collection),內存處理是編程人員容易出現問題的地方,忘記或者錯誤的內存回收會導致程序或系統的不穩定甚至崩潰,Java提供的GC功能可以自動監測對象是否超過作用域從而達到自動回收內存的目的,Java語言沒有提供釋放已分配內存的顯示操作方法。
30、float型float f=3.4是否正確?
答:不正確。精度不準確,應該用強制類型轉換,如下所示:float f=(float)3.4
31、介紹JAVA中的Collection FrameWork(包括如何寫自己的數據結構)?
答:Collection FrameWork如下: Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ├Hashtable ├HashMap └WeakHashMap Collection是最基本的集合接口,一個Collection代表一組Object,即Collection的元素(Elements)Map提供key到value的映射
32、抽象類與接口?
答:抽象類與接口都用于抽象,但是抽象類(JAVA中)可以有自己的部分實現,而接口則完全是一個標識(同時有多重繼承的功能)。JAVA類實現序例化的方法是實現java.io.Serializable接口 Collection框架中實現比較要實現Comparable 接口和 Comparator 接口
33、String與StringBuffer的區別。
答:STRING的長度是不可變的,STRINGBUFFER的長度是可變的。如果你對字符串中的內容經常進行操作,特別是內容要修改時,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法
34、談談final, finally, finalize的區別
答:final—修飾符(關鍵字)如果一個類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被繼承。因此一個類不能既被聲明為 abstract的,又被聲明為final的。將變量或方法聲明為final,可以保證它們在使用中不被改變。被聲明為final的變量必須在聲明時給定初值,而在以后的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重載 finally—再異常處理時提供 finally 塊來執行任何清除操作。如果拋出一個異常,那么相匹配的 catch 子句就會執行,然后控制就會進入 finally 塊(如果有的話)finalize—方法名。Java 技術允許使用 finalize()方法在垃圾收集器將對象從內存中清除出去之前做必要的清理工作。這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調用的。它是在 Object 類中定義的,因此所有的類都繼承了它。子類覆蓋 finalize()方法以整理系統資源或者執行其他清理工作。finalize()方法是在垃圾收集器刪除對象之前對這個對象調用的
35、面向對象的特征有哪些方面
答:主要有以下四方面:
1.抽象:抽象就是忽略一個主題中與當前目標無關的那些方面,以便更充分地注意與當前目標有關的方面。抽象并不打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細節。抽象包括兩個方面,一是過程抽象,二是數據抽象。
2.繼承:繼承是一種聯結類的層次模型,并且允許和鼓勵類的重用,它提供了一種明確表述共性的方法。對象的一個新類可以從現有的類中派生,這個過程稱為類繼承。新類繼承了原始類的特性,新類稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。派生類可以從它的基類那里繼承方法和實例變量,并且類可以修改或增加新的方法使之更適合特殊的需要。
3.封裝:封裝是把過程和數據包圍起來,對數據的訪問只能通過已定義的界面。面向對象計算始于這個基本概念,即現實世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受保護的接口訪問其他對象。4.多態性:多態性是指允許不同類的對象對同一消息作出響應。多態性包括參數化多態性和包含多態性。多態性語言具有靈活、抽象、行為共享、代碼共享的優勢,很好的解決了應用程序函數同名問題。
36、String是最基本的數據類型嗎
答:基本數據類型包括byte、int、char、long、float、double、boolean和short。java.lang.String類是final類型的,因此不可以繼承這個類、不能修改這個類。為了提高效率節省空間,我們應該用StringBuffer類
37、int 和 Integer 有什么區別
答:Java 提供兩種不同的類型:引用類型和原始類型(或內置類型)。Int是java的原始數據類型,Integer是java為int提供的封裝類。Java為每個原始類型提供了封裝類。原始類型封裝類
booleanBoolean,charCharacter,byteByte,shortShort,intInteger,longLong,floatFloat,doubleDouble 引用類型和原始類型的行為完全不同,并且它們具有不同的語義。引用類型和原始類型具有不同的特征和用法,它們包括:大小和速度問題,這種類型以哪種類型的數據結構存儲,當引用類型和原始類型用作某個類的實例數據時所指定的缺省值。對象引用實例變量的缺省值為 null,而原始類型實例變量的缺省值與它們的類型有關
38、運行時異常與一般異常有何異同
答:異常表示程序運行過程中可能出現的非正常狀態,運行時異常表示虛擬機的通常操作中可能遇到的異常,是一種常見運行錯誤。java編譯器要求方法必須聲明拋出可能發生的非運行時異常,但是并不要求必須聲明拋出未被捕獲的運行時異常。
39、說出ArrayList,Vector, LinkedList的存儲性能和特性
答:ArrayList和Vector都是使用數組方式存儲數據,此數組元素數大于實際存儲的數據以便增加和插入元素,它們都允許直接按序號索引元素,但是插入元素要涉及數組元素移動等內存操作,所以索引數據快而插入數據慢,Vector由于使用了synchronized方法(線程安全),通常性能上較ArrayList差,而LinkedList使用雙向鏈表實現存儲,按序號索引數據需要進行前向或后向遍歷,但是插入數據時只需要記錄本項的前后項即可,所以插入速度較快。
40、HashMap和Hashtable的區別
答:HashMap是Hashtable的輕量級實現(非線程安全的實現),他們都完成了Map接口,主要區別在于HashMap允許空(null)鍵值(key),由于非線程安全,效率上可能高于Hashtable。HashMap允許將null作為一個entry的key或者value,而Hashtable不允許。HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因為contains方法容易讓人引起誤解。Hashtable繼承自Dictionary類,而HashMap是Java1.2引進的Map interface的一個實現。最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多個線程訪問Hashtable時,不需要自己為它的方法實現同步,而HashMap 就必須為之提供外同步。Hashtable和HashMap采用的hash/rehash算法都大概一樣,所以性能不會有很大的差異。
41、heap和stack有什么區別
答:棧是一種線形集合,其添加和刪除元素的操作應在同一段完成。棧按照后進先出的方式進行處理。堆是棧的一個組成元素
42、Java的接口和C++的虛類的相同和不同處
答:由于Java不支持多繼承,而有可能某個類或對象要使用分別在幾個類或對象里面的方法或屬性,現有的單繼承機制就不能滿足要求。與繼承相比,接口有更高的靈活性,因為接口中沒有任何實現代碼。當一個類實現了接口以后,該類要實現接口里面所有的方法和屬性,并且接口里面的屬性在默認狀態下面都是public static,所有方法默認情況下是public.一個類可以實現多個接口。
43、Java中的異常處理機制的簡單原理和應用
答:當JAVA程序違反了JAVA的語義規則時,JAVA虛擬機就會將發生的錯誤表示為一個異常。違反語義規則包括2種情況。一種是JAVA類庫內置的語義檢查。例如數組下標越界,會引發IndexOutOfBoundsException;訪問null的對象時會引發NullPointerException。另一種情況就是JAVA允許程序員擴展這種語義檢查,程序員可以創建自己的異常,并自由選擇在何時用throw關鍵字引發異常。所有的異常都是java.lang.Thowable的子類。
43、垃圾回收的優點和原理。并考慮2種回收機制
答:Java語言中一個顯著的特點就是引入了垃圾回收機制,使c++程序員最頭疼的內存管理的問題迎刃而解,它使得Java程序員在編寫程序的時候不再需要考慮內存管理。由于有個垃圾回收機制,Java中的對象不再有“作用域”的概念,只有對象的引用才有“作用域”。垃圾回收可以有效的防止內存泄露,有效的使用可以使用的內存。垃圾回收器通常是作為一個單獨的低級別的線程運行,不可預知的情況下對內存堆中已經死亡的或者長時間沒有使用的對象進行清楚和回收,程序員不能實時的調用垃圾回收器對某個對象或所有對象進行垃圾回收。回收機制有分代復制垃圾回收和標記垃圾回收,增量垃圾回收。
44、你所知道的集合類都有哪些?主要方法?
答:最常用的集合類是 List 和 Map。List 的具體實現包括 ArrayList 和 Vector,它們是可變大小的列表,比較適合構建、存儲和操作任何類型對象的元素列表。List 適用于按數值索引訪問元素的情形。Map 提供了一個更通用的元素存儲方法。Map 集合類用于存儲元素對(稱作“鍵”和“值”),其中每個鍵映射到一個值。
45、描述一下JVM加載class文件的原理機制?
答:JVM中類的裝載是由ClassLoader和它的子類來實現的,Java ClassLoader 是一個重要的Java運行時系統組件。它負責在運行時查找和裝入類文件的類。
46、排序都有哪幾種方法?請列舉
答: 排序的方法有:插入排序(直接插入排序、希爾排序),交換排序(冒泡排序、快速排序),選擇排序(直接選擇排序、堆排序),歸并排序,分配排序(箱排序、基數排序)快速排序的偽代碼。/ /使用快速排序方法對a[ 0 :n-1 ]排序從a[ 0 :n-1 ]中選擇一個元素作為m i d d l e,該元素為支點把余下的元素分割為兩段left 和r i g h t,使得l e f t中的元素都小于等于支點,而right 中的元素都大于等于支點遞歸地使用快速排序方法對left 進行排序遞歸地使用快速排序方法對right 進行排序所得結果為l e f t + m i d d l e + r i g h t
47、JAVA語言如何進行異常處理,關鍵字:throws,throw,try,catch,finally分別代表什么意義?在try塊中可以拋出異常嗎?
答:Java通過面向對象的方法進行異常處理,把各種不同的異常進行分類,并提供了良好的接口。在Java中,每個異常都是一個對象,它是Throwable類或其它子類的實例。當一個方法出現異常后便拋出一個異常對象,該對象中包含有異常信息,調用這個對象的方法可以捕獲到這個異常并進行處理。Java的異常處理是通過5個關鍵詞來實現的:try、catch、throw、throws和finally。一般情況下是用try來執行一段程序,如果出現異常,系統會拋出(throws)一個異常,這時候你可以通過它的類型來捕捉(catch)它,或最后(finally)由缺省處理器來處理。用try來指定一塊預防所有“異常”的程序。緊跟在try程序后面,應包含一個catch子句來指定你想要捕捉的“異常”的類型。throw語句用來明確地拋出一個“異常”。throws用來標明一個成員函數可能拋出的各種“異常”。Finally為確保一段代碼不管發生什么“異常”都被執行一段代碼。可以在一個成員函數調用的外面寫一個try語句,在這個成員函數內部寫另一個try語句保護其他代碼。每當遇到一個try語句,“異常”的框架就放到堆棧上面,直到所有的try語句都完成。如果下一級的try語句沒有對某種“異常”進行處理,堆棧就會展開,直到遇到有處理這種“異常”的try語句。
48、一個“.java”源文件中是否可以包括多個類(不是內部類)?有什么限制?
答:可以。必須只有一個類名與文件名相同。
49、java中有幾種類型的流?JDK為每種類型的流提供了一些抽象類以供繼承,請說出他們分別是哪些類?
答:字節流,字符流。字節流繼承于InputStream OutputStream,字符流繼承于InputStreamReader OutputStreamWriter。在java.io包中還有許多其他的流,主要是為了提高性能和使用方便。
50、java中會存在內存泄漏嗎,請簡單描述。
答:會。自己實現堆載的數據結構時有可能會出現內存泄露,可參看effective java.51、java中實現多態的機制是什么?
答:方法的重寫Overriding和重載Overloading是Java多態性的不同表現。重寫Overriding是父類與子類之間多態性的一種表現,重載Overloading是一個類中多態性的一種表現。
52、垃圾回收器的基本原理是什么?垃圾回收器可以馬上回收內存嗎?有什么辦法主動通知虛擬機進行垃圾回收
答:對于GC來說,當程序員創建對象時,GC就開始監控這個對象的地址、大小以及使用情況。通常,GC采用有向圖的方式記錄和管理堆(heap)中的所有對象。通過這種方式確定哪些對象是“可達的”,哪些對象是“不可達的”。當GC確定一些對象為“不可達”時,GC就有責任回收這些內存空間。可以。程序員可以手動執行System.gc(),通知GC運行,但是Java語言規范并不保證GC一定會執行。
53、靜態變量和實例變量的區別? 答:static i = 10;//常量 class A a;a.i =10;//可變
54、什么是java序列化,如何實現java序列化?
答:序列化就是一種用來處理對象流的機制,所謂對象流也就是將對象的內容進行流化。可以對流化后的對象進行讀寫操作,也可將流化后的對象傳輸于網絡之間。序列化是為了解決在對對象流進行讀寫操作時所引發的問題。序列化的實現:將需要被序列化的類實現Serializable接口,該接口沒有需要實現的方法,implements Serializable只是為了標注該對象是可被序列化的,然后使用一個輸出流(如:FileOutputStream)來構造一個ObjectOutputStream(對象流)對象,接著,使用ObjectOutputStream對象的writeObject(Object obj)方法就可以將參數為obj的對象寫出(即保存其狀態),要恢復的話則用輸入流。
55、是否可以從一個static方法內部發出對非static方法的調用?
答:不可以,如果其中包含對象的method();不能保證對象初始化.56、寫clone()方法時,通常都有一行代碼,是什么?
答:Clone 有缺省行為,super.clone();他負責產生正確大小的空間,并逐位復制。
57、在JAVA中,如何跳出當前的多重嵌套循環?
答:用break;return 方法。
58、List、Map、Set三個接口,存取元素時,各有什么特點?
答:List 以特定次序來持有元素,可有重復元素。Set 無法擁有重復元素,內部排序。Map 保存key-value值,value可多值。
59、說出一些常用的類,包,接口,請各舉5個
答:常用的類:BufferedReader BufferedWriter FileReader FileWirter String Integer 常用的包:java.lang java.awt java.io java.util java.sql 常用的接口:Remote List Map Document NodeList