JAVA基础知识(3)
生活随笔
收集整理的這篇文章主要介紹了
JAVA基础知识(3)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
| 41、是否可以繼承String類? String類是final類故不可以繼承。 42、swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上? switch(expr1)中,expr1是一個整數(shù)表達(dá)式。因此傳遞給?switch?和?case?語句的參數(shù)應(yīng)該是?int、?short、?char?或者?byte。long,string?都不能作用于swtich。 43、try?{}里有一個return語句,那么緊跟在這個try后的finally?{}里的code會不會被執(zhí)行,什么時候被執(zhí)行,在return前還是后? 會執(zhí)行,在return前執(zhí)行。 44、編程題:?用最有效率的方法算出2乘以8等於幾?? 2?<<?3 45、兩個對象值相同(x.equals(y)?==?true),但卻可有不同的hash?code,這句話對不對? 不對,有相同的hash?code。 46、當(dāng)一個對象被當(dāng)作參數(shù)傳遞到一個方法后,此方法可改變這個對象的屬性,并可返回變化后的結(jié)果,那么這里到底是值傳遞還是引用傳遞?? 是值傳遞。Java?編程語言只有值傳遞參數(shù)。當(dāng)一個對象實例作為一個參數(shù)被傳遞到方法中時,參數(shù)的值就是對該對象的引用。對象的內(nèi)容可以在被調(diào)用的方法中改變,但對象的引用是永遠(yuǎn)不會改變的。 47、當(dāng)一個線程進(jìn)入一個對象的一個synchronized方法后,其它線程是否可進(jìn)入此對象的其它方法? 不能,一個對象的一個synchronized方法只能由一個線程訪問。 48、編程題:?寫一個Singleton出來。 Singleton模式主要作用是保證在Java應(yīng)用程序中,一個類Class只有一個實例存在。 一般Singleton模式通常有幾種種形式: 第一種形式:?定義一個類,它的構(gòu)造函數(shù)為private的,它有一個static的private的該類變量,在類初始化時實例話,通過一個public的getInstance方法獲取對它的引用,繼而調(diào)用其中的方法。 public?class?Singleton?{ private?Singleton(){} ????//在自己內(nèi)部定義自己一個實例,是不是很奇怪? ????//注意這是private?只供內(nèi)部調(diào)用 ????private?static?Singleton?instance?=?new?Singleton(); ????//這里提供了一個供外部訪問本class的靜態(tài)方法,可以直接訪問 ????public?static?Singleton?getInstance()?{ ????return?instance;? ????}? ????}? ????第二種形式:? public?class?Singleton?{? private?static?Singleton?instance?=?null; public?static?synchronized?Singleton?getInstance()?{ //這個方法比上面有所改進(jìn),不用每次都進(jìn)行生成對象,只是第一次 ? //使用時生成實例,提高了效率! if?(instance==null) instance=new?Singleton(); return?instance;? }? }? 其他形式: 定義一個類,它的構(gòu)造函數(shù)為private的,所有方法為static的。 一般認(rèn)為第一種形式要更加安全些? 49、Java的接口和C++的虛類的相同和不同處。 由于Java不支持多繼承,而有可能某個類或?qū)ο笠褂梅謩e在幾個類或?qū)ο罄锩娴姆椒ɑ驅(qū)傩?#xff0c;現(xiàn)有的單繼承機(jī)制就不能滿足要求。與繼承相比,接口有更高的靈活性,因為接口中沒有任何實現(xiàn)代碼。當(dāng)一個類實現(xiàn)了接口以后,該類要實現(xiàn)接口里面所有的方法和屬性,并且接口里面的屬性在默認(rèn)狀態(tài)下面都是public?static,所有方法默認(rèn)情況下是public.一個類可以實現(xiàn)多個接口。 50、Java中的異常處理機(jī)制的簡單原理和應(yīng)用。 當(dāng)JAVA程序違反了JAVA的語義規(guī)則時,JAVA虛擬機(jī)就會將發(fā)生的錯誤表示為一個異常。違反語義規(guī)則包括2種情況。一種是JAVA類庫內(nèi)置的語義檢查。例如數(shù)組下標(biāo)越界,會引發(fā)IndexOutOfBoundsException;訪問null的對象時會引發(fā)NullPointerException。另一種情況就是JAVA允許程序員擴(kuò)展這種語義檢查,程序員可以創(chuàng)建自己的異常,并自由選擇在何時用throw關(guān)鍵字引發(fā)異常。所有的異常都是java.lang.Thowable的子類。 51、垃圾回收的優(yōu)點和原理。并考慮2種回收機(jī)制。 Java語言中一個顯著的特點就是引入了垃圾回收機(jī)制,使c++程序員最頭疼的內(nèi)存管理的問題迎刃而解,它使得Java程序員在編寫程序的時候不再需要考慮內(nèi)存管理。由于有個垃圾回收機(jī)制,Java中的對象不再有"作用域"的概念,只有對象的引用才有"作用域"。垃圾回收可以有效的防止內(nèi)存泄露,有效的使用可以使用的內(nèi)存。垃圾回收器通常是作為一個單獨(dú)的低級別的線程運(yùn)行,不可預(yù)知的情況下對內(nèi)存堆中已經(jīng)死亡的或者長時間沒有使用的對象進(jìn)行清楚和回收,程序員不能實時的調(diào)用垃圾回收器對某個對象或所有對象進(jìn)行垃圾回收。回收機(jī)制有分代復(fù)制垃圾回收和標(biāo)記垃圾回收,增量垃圾回收。 52、請說出你所知道的線程同步的方法。 wait():使一個線程處于等待狀態(tài),并且釋放所持有的對象的lock。 sleep():使一個正在運(yùn)行的線程處于睡眠狀態(tài),是一個靜態(tài)方法,調(diào)用此方法要捕捉InterruptedException異常。 notify():喚醒一個處于等待狀態(tài)的線程,注意的是在調(diào)用此方法的時候,并不能確切的喚醒某一個等待狀態(tài)的線程,而是由JVM確定喚醒哪個線程,而且不是按優(yōu)先級。 Allnotity():喚醒所有處入等待狀態(tài)的線程,注意并不是給所有喚醒線程一個對象的鎖,而是讓它們競爭。 53、你所知道的集合類都有哪些?主要方法? 最常用的集合類是?List?和?Map。?List?的具體實現(xiàn)包括?ArrayList?和?Vector,它們是可變大小的列表,比較適合構(gòu)建、存儲和操作任何類型對象的元素列表。?List?適用于按數(shù)值索引訪問元素的情形。? Map?提供了一個更通用的元素存儲方法。?Map?集合類用于存儲元素對(稱作"鍵"和"值"),其中每個鍵映射到一個值。 54、描述一下JVM加載class文件的原理機(jī)制? JVM中類的裝載是由ClassLoader和它的子類來實現(xiàn)的,Java?ClassLoader?是一個重要的Java運(yùn)行時系統(tǒng)組件。它負(fù)責(zé)在運(yùn)行時查找和裝入類文件的類。 55、char型變量中能不能存貯一個中文漢字?為什么?? 能夠定義成為一個中文的,因為java中以unicode編碼,一個char占16個字節(jié),所以放一個中文是沒問題的 56、多線程有幾種實現(xiàn)方法,都是什么?同步有幾種實現(xiàn)方法,都是什么?? 多線程有兩種實現(xiàn)方法,分別是繼承Thread類與實現(xiàn)Runnable接口? 同步的實現(xiàn)方面有兩種,分別是synchronized,wait與notify 57、JSP的內(nèi)置對象及方法。 request表示HttpServletRequest對象。它包含了有關(guān)瀏覽器請求的信息,并且提供了幾個用于獲取cookie,?header,?和session數(shù)據(jù)的有用的方法。? ????response表示HttpServletResponse對象,并提供了幾個用于設(shè)置送回?瀏覽器的響應(yīng)的方法(如cookies,頭信息等)? ????out對象是javax.jsp.JspWriter的一個實例,并提供了幾個方法使你能用于向瀏覽器回送輸出結(jié)果。? ????pageContext表示一個javax.servlet.jsp.PageContext對象。它是用于方便存取各種范圍的名字空間、servlet相關(guān)的對象的API,并且包裝了通用的servlet相關(guān)功能的方法。? ????session表示一個請求的javax.servlet.http.HttpSession對象。Session可以存貯用戶的狀態(tài)信息? ????applicaton?表示一個javax.servle.ServletContext對象。這有助于查找有關(guān)servlet引擎和servlet環(huán)境的信息? ????config表示一個javax.servlet.ServletConfig對象。該對象用于存取servlet實例的初始化參數(shù)。? ????page表示從該頁面產(chǎn)生的一個servlet實例 58、線程的基本概念、線程的基本狀態(tài)以及狀態(tài)之間的關(guān)系 線程指在程序執(zhí)行過程中,能夠執(zhí)行程序代碼的一個執(zhí)行單位,每個程序至少都有一個線程,也就是程序本身。 Java中的線程有四種狀態(tài)分別是:運(yùn)行、就緒、掛起、結(jié)束。? 59、JSP的常用指令 <%@page?language="java"?contenType="text/html;charset=gb2312"?session="true"?buffer="64kb"?autoFlush="true"?isThreadSafe="true"?info="text"?errorPage="error.jsp"?isErrorPage="true"?isELIgnored="true"?pageEncoding="gb2312"?import="java.sql.*"%> isErrorPage(是否能使用Exception對象),isELIgnored(是否忽略表達(dá)式) <%@include?file="filename"%> <%@taglib?prefix="c"uri="http://......"%> 60、什么情況下調(diào)用doGet()和doPost()? Jsp頁面中的form標(biāo)簽里的method屬性為get時調(diào)用doGet(),為post時調(diào)用doPost()。 |
總結(jié)
以上是生活随笔為你收集整理的JAVA基础知识(3)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA基础知识(1)
- 下一篇: JAVA基础知识(2)