java基礎知識複習

1、Java語言的優點:

1)Java是純面嚮對象語言
2)與平臺無關性,一次編譯到處運行
3)Java提供了很多內置類庫
4)提供了對web應用的支持
5)具有較好的安全性(數組邊界檢測、Bytecode檢測)和健壯性(強制型機制、垃圾回收器、異常處理)
6)去除c++難以理解的一些特性(頭文件 指針 運算符重載 多重繼承)
2、java與c++的異同:
1)Java爲解釋型語言,c++爲編譯型語言,java會慢但是跨平臺
2)Jave爲純面向對象,c++既面向對象又能面向過程。Jave無全局變量和全局函數
3)Java沒有指針,更安全
4)Java不支持多繼承但是有接口概念
5)Java不需人工分配管理內存(申請 釋放),提供垃圾回收器自動回收。當堆棧或靜態存儲區沒有對這個對象的引用時,就會被回收。沒有析構函數,但是有finalize()方法。
6)Java沒有運算符重載,沒有預處理功能。
3、public static void main(String [] args)是程序的入口。

4、java可有多個main()文件,但只有與文件名相同的用public修飾的類的main()才能作爲程序的入口。注:有且僅有一個類被public修飾並與文件同名。
5、靜態快在main函數之前執行。初始化執行順序:父靜態變量 父靜態代碼塊 子靜態代碼變量 子靜態代碼塊 父非靜態變量 父非靜態代碼塊 父類構造函數 子非靜態變量 子非靜態代碼塊 子類構造函數
6、構造函數:

1)與類同名,無返回值
2)可以有多個,根據參數不同
3)總是伴隨new操作一起調用
4)主要用來初始化對象
5)不能被繼承
6)可用super來顯示調用父類構造函數
7、淺複製僅僅複製考慮的對象,不復制它引用的對象。深複製兩者都複製

8、面向對象和麪向過程有什麼不同:
1)面向對象是用符合常規思維的方式去處理客觀世界的問題,面向過程是則重以事件爲中心,模塊化。
2)面向對象是使計算機世界向客觀世界靠攏,使問題的處理更清晰。面向過程是清晰準確表達過程的模塊,把客觀世界的問題抽象成計算機可以處理的過程。
9、面向對象的特徵和優點:抽象 繼承 封裝 多態有較高的開發效率,代碼可重用。較高的可維護性,代碼更清晰明瞭。
10、java只支持單根繼承,extends繼承是 is a 關係,組合是 has a關係。
在java語言中能用到組合的儘量不要用繼承。
11、多態:
重載(overload同個類中有多個同名方法) 水平關係
重寫(override子類重寫父類,方法名和參數列表相同) 垂直關係
12、抽象類和接口的異同:
1)只要包含一個抽象方法都是抽象類,接口的方法全部是抽象方法,稱爲純抽象類
2)抽象類的子類需實現父類的抽象方法。
3)接口中的變量都默認爲:static final 必須賦初值
4)接口實現用implements。一個類可以實現多個接口實現類似多繼承的關係。
5)接口被運用於常用的功能,如:添加刪除。抽象類用於生活公共類的角色,不適用經常對代碼修改的情況
13、this和super的區別:
This用來指向當前實例對象
Super用來訪問父類的方法和成員變量,注:調用者依舊是this
子類繼承父類時,子類構造函數中super()必須放第一句。
14、break continue return 的區別:
Break 用於直接強行跳出當前循環,不執行剩餘代碼
Continue 用於停止當次循環,回到起始處進行下次循環。
Return 跳轉 用來表示從一個方法中返回。
Break out跳出多重循環
15、static的作用:
a 爲對象分配單一的存儲空間,與創建對象個數無關
b 實現某個方法或屬性和類而不是與對象關聯在一起
C 變量可達到全局的效果,在內存中只有一個複製
16、不可變類的實現:
類中的所有成員變量被private修飾
沒有寫set方法
類定義final
17、值傳遞和引用傳遞的區別:
值傳遞:實參會把它的值傳遞給形參
引用傳遞:傳遞的是對象,形參和實參指向同個存儲單元。
18、有八種基本數據類型,byte不能與booleam互換
19、round 表示四捨五入 ceil表示向上取整 floor表示向下取整,i++表示先執行後加
一,++i表示先加一後執行。
20、String s1=”abc”是存放在常量區

String s2=”abc”s2應用常量區的對象,不會創建新的對象。
String s3=new String(“abc”)是在堆中創建對象,
String s4=new String(“abc”)又必須在堆中創建新對象。
21、==
用來比較兩個變量的值是否相等,如果一個變量指向的數據是對象(引用類型),就有兩塊內存。對象本身佔用一塊內存(堆內存),變量也佔用一塊內存。String s4 == new String(“abc”)。變量s所對應的內存中存儲的數值就是對象佔用那塊內存的首地址。如果想看兩個變量是否指向同一個對象,即要看他們對應內存中的數值(首地址)是否相同。
equals:屬於Object中的方法,默認是和"=="效果相同,但在某些類中(String,Integer等)重寫了equals方法,比較的是對象的值
22、數組也是對象。數組提供length屬性來獲取數組的長度,而String是通過length()計算。
23、異常處理
1)try catch finally模式
2)Finally塊中的代碼一定會被執行,除非這兩種情況:當程序在try之前就遇到異常或者在try中通過exit()強制退出。
3)jvm將錯誤表示爲一個異常並拋出,通過catch來捕獲,然後進行處理。
4)異常分爲兩大類:錯誤(error)和異常(Excetion)
異常分爲:檢查異常運行異常
檢查異常又稱爲編譯異常。
比如:IO異常、SQL異常
運行異常爲:空指針異常、類型轉換異常、算術異常、數組越界異常、數組存儲異常、緩存區溢出異常。
先捕獲子類後捕獲父類,儘早拋出異常,能處理就處理,不處理就拋出,運行時異常實際不必處理,直接拋出。
24、Java IO:字節流(8位)不會用到緩存 字符流(16位)用到緩存
25、Socket稱爲套接字。用來實現不同虛擬機或不同計算機之間的通信。
分爲兩種類型:面向連接的TCP,可靠。無面向連接的UDP,不可靠。
任何一個Socket都是由一個IP地址和端口號唯一確定。
26、java平臺獨立性是指一個平臺上編寫和編譯程序,而在其他平臺上運行。有JVM和java API。
Java語言是一種動態解釋型語言,類class只有被加載到JVM上才能運行。不會一次加載全部類後執行,而是先加載基類,其他類是需要時再加載。
27、垃圾回收GC:回收不會再使用的內存。三個任務:分配內存;確保被引用的內存不被錯誤地回收;回收不再被引用的對象的內存。
28、java中內存泄露問題:
兩種情況:
1)在堆中申請的空間沒有得到釋放
2)對象不再被使用,但是仍在內存中保留着
原因:靜態集合類、各種連接、監聽器、變量不合理的作用域
29、java中堆和棧的區別:

分配在棧:基本數據類型的變量、對象的引用變量
變量出了作用域就會被自動釋放
分配在堆:引用類型變量、需要通過new創建的變量。主要爲運行時創建的對象
JVM是基於堆棧的虛擬機,每個java程序都運行在一個單獨的JVM實例上,所以一個java程序中的對個線程運行在,每個實例又唯一對應一個堆,所以這些線程之間會共享堆內存。

只需要申請堆空間,不需要考慮釋放問題。
使用棧中的引用變量來訪問堆中的數組和對象。
堆只要是用來存放對象的,棧主要是用來放執行程序的。
棧的速度快,但大小和生存期確定,缺乏靈活性。堆是動態分配內存,靈活性強但速度慢。
30、容器:java Collections框架:list 、Queue 、set 、stack 、map
list 、Queue 、set 、stack都實現Collection接口

1)List是有序的Collection。按對象的進入順序保存對象,可保存重複對象。
2)Set是集合的概念,集合中不能有重複的元素。
3)map是鍵映射到值得數據結構。值可以重複,但是鍵是唯一的,不能重複。
31、迭代器:是一個對象,一種訪問一個容器對象的各個元素,而又不必暴露該對象內部的細節方法。
1)使用容器的iterator()方法返回一個Iterator,然後通過Iterator的next()方法返回一個元素。
2)使用Iterator的hasNext()方法判斷容器中是否還有元素,如果有可以使用next()獲取下一個元素。
3)通過remove()來刪除迭代器返回的元素。
32、collection和collections的區別:
Collection:是一個集合接口,爲各個具體集合提供最大化的統一操作。
Collections:是針對集合類的一個包裝類。不能實例化,相當於一個工具類,服務於Collection框架。
33、多線程:
線程:執行代碼的一個執行單元。
進程:一個正在執行的程序
各線程共享程序的內存空間(代碼段、數據、堆空間)有獨立的棧空間。
線程優點:
1)減少程序的響應時間
2)相比進程,創建個切換開銷小
3)多CPU和多核本身就具有多線程能力
4)簡化程序結構,便於理解和維護。
34、如何實現java多線程:

1)繼承Thread類,重寫run()方法
2)實現Runnable接口,並實現接口的run()方法。
3)實現Callable接口,重寫call()方法。
35、同步
要想實現同步操作,必須獲得每個線程對象的鎖,獲得它可以保證同一時刻只有一個線程能夠進入臨界區,並且在這個鎖被釋放之前,其他線程就能再進入臨界區,如果還有其他線程想要獲得該對象的鎖,只能進入等待隊列等待。
36、多進程同步的實現方法:
1)synchronized關鍵字
2)Wait()方法與notify()方法
3)Lock
37、終止線程的方法:stop()方法與suspeng()方法。
Java提供兩種線程:守護線程(服務進程)、用戶進程。
38、如何通過JDBC來訪問數據庫:

1)加載JDBC驅動器,將JDBC驅動 jar包複製到lib下
2)加載JDBC驅動
3)創建數據庫連接
4)建立Statement對象或是PrepareStatement對象。用於對數據庫操作
5)執行SQL語句
6)訪問結果集ReaultSet對象
7)依次關閉ReaultSet Statement Connection。
39、Class.forName()方法的作用是把類加載到JVM中。
在使用JDBC連接數據庫之前,一般會調用Class.forName(“com.mysql.jdbc.Driver”)方法來加載驅動。
Statement用於執行不帶參數的簡單SQL語句,並返回它所生成結果的對象。每次執行SQL,數據庫都會編譯該SQL語句。
PrepareStatement可執行帶參數的。效率更高,可讀性,可維護性更高,安全性更好
40、JDBC提供了getString()、getInt()、getIData()等方法從ResultSet中獲取數據。
41、在JDBC連接時連接池數目有限,所以一定要保證釋放不再使用的連接。
createStatement和prepareStatement最好放在循環外面,而且使用statement後需要及時關閉。最好是執行一次executeQuery後馬上關閉statement。
42、Hibernate是JDBC的封裝。採用配置文件的形式將數據庫的連接參數寫到XML中,但
是最後對數據庫的訪問還是要通過JDBC來完成。
43、Hibernate是個持久層框架,它將表中的信息映射到XML中,再從XML文件映射到相應的持久化類中。
Java Web
1、瀏覽器的作用:

1)、完成與服務器端的交互。
2)、完成HTML的解析,實現用戶需要看的內容以直觀的信息展示出來。
2、HTTP的請求方法有:GET POST HEAD TRACE OPTIONS
GET:是最簡單的請求方法,從服務器端獲取用戶所需的資源,並將其作爲響應返回給客戶端。獲取服務器端的信息(查詢)。若需上傳數據則添加到URL後面。數據暴露安全不夠,並且數量受限制。
POST:除了能夠從服務器端獲取資源外,同時還可以向服務器上傳數據。上傳的數據不是在URL中明文顯示,可以上傳大量數據,用戶不可見
3、Servlet:
採用Java語言編寫的服務器程序,運行於Web服務器中的Servlet容器中,主要功能是提供請求、響應的服務模式,可以生成動態的Web內容。
Web服務器獲取到一個對servlet的請求時,會將其交給Tomcat容器進行處理,容器再通過調用Servlet的方法(doGet() doPost())來響應請求。
步驟:
發起servlet請求——>Web服務器交給容器處理——>容器創建兩個對象HttpServletResponse HttpServletRequire——>創建單獨線程,並將兩個對象以參數形式傳遞進入線程——>線程容器調用Servlet的service()方法中的doGet()或doPost()完成響應——>容器將響應消息以HTML形式返回給客戶。
4、Servlet的生命週期:
加載——>創建——> 初始化——> 處理客戶請求——> 卸載
5、JSP的優點:
JSP:嵌入java代碼的html文件。主要解決servlet與HTML的分離。實現業務邏輯與視圖進行分離。
6、JSP與servlet的異同:
相同:
本質都是Servlet文件,只要是JSP能完成的工作,使用Servlet都能完成.JSP最終都是會轉化爲servlet來運行。
不同:
Servlet是處於控制層,主要是做流程控制和業務處理。JSP是處於視圖層,主要用於顯示。
Servlet沒有內置對象,JSP中的內置對象主要是通過HttpServletResponse 對象、HttpServletRequire對象得到。
7、MVC模型:

模型層(Model):實現系統業務邏輯。JavaBean或EJB
視圖層(View):實現用戶的交互。JSP
控制層(Control): 實現視圖與模型的邏輯控制。servlet
8、控制層:
控制器接收用戶的輸入並調用模型和視圖去完成。
控制器本身不輸出任何東西,也不執行任何處理。
只是接收請求並決定使用哪個模型去處理請求,決定使用哪個視圖去顯示模型處理返回數據
9、MVC的優點:
1)低耦合性,實現視圖層與邏輯層分離。
2)高重用性和可適用性
3)部署迅速
4)容易維護
10、Servlet中的forward和redirect有什麼區別:
Forward是服務器內部的重定向,服務器直接訪問目標地址的url,地址不變。
Redirect:客戶端的重定向,完全跳轉,地址改變。
11、JSP的內置對象:
1)require(請求對象)
2)Response(響應對象)
3)pageContext(頁面上下文對象)
4)Session(會話對象)
5)Application(應用程序對象)
6)Out(輸出對象)
7)Config(配置對象)
8)Page(頁面對象)
9)Exception(異常對象)
12、request對象的方法:

1)setAttribute(String name ,Object)設置name的屬性值
2)getAttribute(String name )獲取name的屬性值
3)getParameter(String name )獲取用戶提交的數據,name與表單的name對應一致
4)getSession()用來獲取與請求相關的會話
13、JSP中的動作:
1)JSP:include 用來頁面請求時引進一個文件
2)Jsp:useBean 用來實例化一個javabean
3)Jsp:setProperty 用來設置已經實例化的bean對象的屬性
4)Jsp:getProperty 用來獲取已經實例化的bean對象的屬性
5)Jsp:foward 用來將請求跳轉到另外一個頁面
14、JSP中include指令和include動作
指令:<% @include file =”test.jsp “%>
動作:
15、會話跟蹤技術:
對同一個用戶對服務器的連續請求和接收響應進行監視。
1)page一個頁面
2)Request一個請求
3)Session 一個用戶體驗
4)Application 整個Web應用程序
16、字符串編碼:GBK 、UTF-8
17、什麼是Ajar

異步js與XML。
結合了java技術、js技術、xml技術。 客戶端技術
功能:在不刷新頁面的情況下通過與服務器進行少量的數據交互來提高頁面的交互性,減少響應時間,改善用戶體驗
18、cookie和session的區別:

Session:指用來在客戶端與服務器端之間保持狀態的解決方案以及存儲結構。
Cookie:由Web服務器保存在用戶瀏覽器上的小文件。
19、web服務器:接收來自於客戶端的請求,然後把對請求的處理結果反饋個客戶端
兩大web服務器:IIS Apache。
20、web容器:TomcatJBoss
負責給servlet提供http請求和響應對象,調用doGet()過doPost()方法來處理用戶請求。
21、EJB的類別:
1)session Bean(會話Bean)實現服務器端的業務邏輯,協調Bean之間的交互
2)Entity Bean(實體Bean)資料組件 代表數據庫中的記錄
3)Message Bean(消息驅動 Bean)處理異步消息,一般不是由用戶來調用的
22、EJB與Javabean的異同:

1)EJB:主要用於服務器端的開發,Javabean主要用在客戶端的開發。
2)EJB組件可以部署在EJB容器中,不直接訪問組件,而是通過容器訪問,javabean不可部署
3)EJB是分佈式對象,可以被遠程調用,javabean不是,只能在內部被訪問
23、EJB的角色:

1)Enterprise Bean Provider(企業級組件開發者)
2)Application Assembler(應用組合者)
3)EJB Deployer(EJB部署者)
4)EJB Sever Provider(EJB服務器提供者)
5)EJB Container Provider(EJV容器提供者)
6)System Administrator(系統管理員)
24、數據庫連接池的工作機制:

原因:
1)建立數據庫是非常耗時的操作
2)數據庫連接個數是有限的
數據庫連接池負責分配 管理 釋放數據庫連接。當客戶需要訪問數據庫是,就可以直接從池中獲取數據庫的連接,而不用去創建連接,同時標誌爲忙狀態。
25、JAVAEE開發的調優方法:

1)優化設計
2)儘可能使用數據庫連接
3)使用框架
4)優化I/O
5)優化查詢
26、struts框架的優點:
1)實現表現和邏輯的分離
2)提供頁面導航功能
3)提供表單驗證
4)提供數據庫連接池
5)提供了異常處理機制
6)支持國際化
27、數據驗證分爲:

1)表單驗證
2)業務邏輯驗證
28、國際化:

程序在不修改內部代碼的情況下,根據不同地區顯示相應的界面
29、什麼事控制反轉:

也稱依賴注入,一種降低對象之間耦合關係的設計思想。
使上層不仔依賴於下層的接口,調用者(子)決定被調用者(父)。通過注入一個實例化的對象來實現解耦和目的。
30、Spring框架
提供了對輕量級loc的良好支持,也提供對AOP技術的非常好的封裝。
31、Hibernate框架,持久層框架

實現Java對象與關係數據庫記錄的映射,簡化開發人員訪問數據庫的流程,提高軟件開發的效率
任何使用到JDBC的都可以使用Hibernata
提高性能方法:
1)延遲加載
2)緩存技術
3)優化查詢語句
32、實現分頁:

1)Hibernate自帶的分頁機制
2)用SQL語句實現,使用limit關鍵字
33、SSH:

struts實現視圖部分
Hibernate實現模型部分
Spring實現業務部分
採用SSH框架,不僅能實現視圖、控制器與模型的徹底分離,而且還能實現業務邏輯與數據持久層的分離
文章轉載自 https://www.cnblogs.com/chenyu123/p/4303634.html 有刪改.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章