1. 程式人生 > >java基礎知識複習

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 有刪改.