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