java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(1)
承蒙各位厚愛,希望各位每天都能進(jìn)步一點(diǎn)點(diǎn)!(鼠標(biāo)選中空白處查看答案)
1、HashSet子類依靠()方法區(qū)分重復(fù)元素。
正確答案: C
toString(),equals()
clone(),equals()
hashCode(),equals()
getClass(),clone()
題解:
HashSet內(nèi)部使用Map保存數(shù)據(jù),即將HashSet的數(shù)據(jù)作為Map的key值保存,這也是HashSet中元素不能重復(fù)的原因。而Map中保存key值前,會(huì)去判斷當(dāng)前Map中是否含有該key對(duì)象,內(nèi)部是先通過key的hashCode,確定有相同的hashCode之后,再通過equals方法判斷是否相同。
2、下列哪個(gè)類的聲明是正確的?
正確答案: D
abstract final class HI{}
abstract private move(){}
protected private number;
public abstract class Car{}
題解:
A選項(xiàng),final是最終類,不能被繼承;abstrct類是抽象類,只能被繼承,兩者沖突。
B選項(xiàng),private修飾符定義的屬性及方法不能被子類實(shí)現(xiàn),而抽象類的子類必須實(shí)現(xiàn)所有的抽象方法。兩者沖突。
C選項(xiàng),修飾符重復(fù),而且沒有定義數(shù)據(jù)類型。
D選項(xiàng),正確。
3、下列關(guān)于包(package)的描述,正確的是()
正確答案: D
包(package)是Java中描述操作系統(tǒng)對(duì)多個(gè)源代碼文件組織的一種方式。
import語(yǔ)句將所對(duì)應(yīng)的Java源文件拷貝到此處執(zhí)行。
包(package)是Eclipse組織Java項(xiàng)目特有的一種方式。
定義在同一個(gè)包(package)內(nèi)的類可以不經(jīng)過import而直接相互使用。
題解:
A、為了更好地組織類,Java提供了包機(jī)制。包是類的容器,用于分隔類名空間。如果沒有指定包名,所有的示例都屬于一個(gè)默認(rèn)的無(wú)名包。Java中的包一般均包含相關(guān)的類,java是跨平臺(tái)的,所以java中的包和操作系統(tǒng)沒有任何關(guān)系,java的包是用來組織文件的一種虛擬文件系統(tǒng)。A錯(cuò)
B、import語(yǔ)句并沒有將對(duì)應(yīng)的java源文件拷貝到此處僅僅是引入,告訴編譯器有使用外部文件,編譯的時(shí)候要去讀取這個(gè)外部文件。B錯(cuò)
C、Java提供的包機(jī)制與IDE沒有關(guān)系。C錯(cuò)
D、定義在同一個(gè)包(package)內(nèi)的類可以不經(jīng)過import而直接相互使用。
4、以下代碼執(zhí)行后輸出結(jié)果為( )
public class Test { public static Test t1 = new Test(); { System.out.println("blockA"); } static { System.out.println("blockB"); } public static void main(String[] args) { Test t2 = new Test(); } }
正確答案: A
blockAblockBblockA
blockAblockAblockB
blockBblockBblockA
blockBblockAblockB
題解:
靜態(tài)塊:用static申明,JVM加載類時(shí)執(zhí)行,僅執(zhí)行一次
構(gòu)造塊:類中直接用{}定義,每一次創(chuàng)建對(duì)象時(shí)執(zhí)行
執(zhí)行順序優(yōu)先級(jí):靜態(tài)塊>main()>構(gòu)造塊>構(gòu)造方法
靜態(tài)塊按照申明順序執(zhí)行,先執(zhí)行Test t1 = new Test();
所以先輸出blockA,然后執(zhí)行靜態(tài)塊,輸出blockB,最后執(zhí)行main
方法中的Test t2 = new Test();輸出blockA。
5、Given the following code:
public class Test { private static int j = 0; private static Boolean methodB(int k) { j += k; return true; } public static void methodA(int i) { boolean b; b = i < 10 | methodB(4); b = i < 10 || methodB(8); } public static void main(String args[]) { methodA(0); System.out.println(j); } }
正確答案: B
The program prints”0”
The program prints”4”
The program prints”8”
The program prints”12”
The code does not complete.
題解:
選 B
在main函數(shù)中先調(diào)用methodA(0)
在methodA中,第二行
b = i < 10 | methodB(4); //中間為與計(jì)算符,執(zhí)行完methodB(4)后,j = 4
methodA中,第三行
b = i < 10 || methodB(8);//中間為或計(jì)算符,因?yàn)閕 < 10 已成立,不需要后續(xù)計(jì)算
所以最后結(jié)果輸出為4
6、下列敘述中,錯(cuò)誤的是( )
正確答案: B
File類能夠存儲(chǔ)文件屬性
File類能夠讀寫文件
File類能夠建立文件
File類能夠獲取文件目錄信息
題解:
File類能操作文件本身,但不能對(duì)文件內(nèi)容進(jìn)行修改
能夠讀寫文件的是數(shù)據(jù)流(OutputStream和InputStream)
7、在Java中,對(duì)于不再使用的內(nèi)存資源,如調(diào)用完成的方法,“垃圾回收器”會(huì)自動(dòng)將其釋放。( )
正確答案: B
正確
錯(cuò)誤
題解:
方法調(diào)用時(shí),會(huì)創(chuàng)建棧幀在棧中,調(diào)用完是程序自動(dòng)出棧釋放,而不是gc釋放。
JVM 內(nèi)存可簡(jiǎn)單分為三個(gè)區(qū):
1、堆區(qū)(heap):用于存放所有對(duì)象,是線程共享的(注:數(shù)組也屬于對(duì)象)
2、棧區(qū)(stack):用于存放基本數(shù)據(jù)類型的數(shù)據(jù)和對(duì)象的引用,是線程私有的(分為:虛擬機(jī)棧和本地方法棧)
3、方法區(qū)(method):用于存放類信息、常量、靜態(tài)變量、編譯后的字節(jié)碼等,是線程共享的(也被稱為非堆,即 None-Heap)
Java 的垃圾回收器(GC)主要針對(duì)堆區(qū)
8、在Java中,關(guān)于HashMap類的描述,以下正確的是 ()
正確答案: A C D 你
HashMap使用鍵/值得形式保存數(shù)據(jù)
HashMap 能夠保證其中元素的順序
HashMap允許將null用作鍵
HashMap允許將null用作值
題解:
HashMap 不按插入順序排序,按照哈希值排序。所以無(wú)序。
但是不增刪改鍵的情況下,輸出是按照一定順序不變的。
hashMap 允許空鍵值,hashTable 則不允許。
9、以下各類中哪幾個(gè)是線程安全的?( )
正確答案: B C D
ArrayList
Vector
Hashtable
Stack
題解:
線程同步:喂,SHE
喂(Vector)
S(Stack)
H(hashtable)
E(enumeration)
10、關(guān)于Java中的ClassLoader下面的哪些描述是錯(cuò)誤的:( )
正確答案: B D F
A:默認(rèn)情況下,Java應(yīng)用啟動(dòng)過程涉及三個(gè)ClassLoader: Boostrap, Extension, System
B:一般的情況不同ClassLoader裝載的類是不相同的,但接口類例外,對(duì)于同一接口所有類裝載器裝載所獲得的類是相同的
C:類裝載器需要保證類裝載過程的線程安全
D:ClassLoader的loadClass在裝載一個(gè)類時(shí),如果該類不存在它將返回null
E:ClassLoader的父子結(jié)構(gòu)中,默認(rèn)裝載采用了父優(yōu)先
F:所有ClassLoader裝載的類都來自CLASSPATH環(huán)境指定的路徑
題解:
A.Java系統(tǒng)提供3種類加載器:?jiǎn)?dòng)類加載器(Bootstrap ClassLoader) 擴(kuò)展類加載器(Extension ClassLoader) 應(yīng)用程序類加載器(Application ClassLoader). A正確
B.《深入理解Java虛擬機(jī)》P228:對(duì)于任意一個(gè)類,都需要由加載它的類加載器和這個(gè)類本身一同確立其在Java虛擬機(jī)中的唯一性,每一個(gè)類加載器,都擁有一個(gè)獨(dú)立的類名稱空間。這句話可以表達(dá)得更通俗一些:比較兩個(gè)類是否“相等”,只有在這兩個(gè)類是由同一個(gè)類加載器加載的前提下才有意義,否則,即使這兩個(gè)類來源于同一個(gè)Class文件,被同一個(gè)虛擬機(jī)加載,只要加載它們的類加載器不同,那么這兩個(gè)類必定不相等。接口類是一種特殊類,因此對(duì)于同一接口不同的類裝載器裝載所獲得的類是不相同的。B錯(cuò)誤
C.類只需加載一次就行,因此要保證類加載過程線程安全,防止類加載多次。C正確
D. Java程序的類加載器采用雙親委派模型,實(shí)現(xiàn)雙親委派的代碼集中在java.lang.ClassLoader的loadClass()方法中,此方法實(shí)現(xiàn)的大致邏輯是:先檢查是否已經(jīng)被加載,若沒有加載則調(diào)用父類加載器的loadClass()方法,若父類加載器為空則默認(rèn)使用啟動(dòng)類加載器作為父類加載器。如果父類加載失敗,拋出ClassNotFoundException異常。D錯(cuò)誤
E.雙親委派模型的工作過程:如果一個(gè)類加載器收到了類加載的請(qǐng)求,它首先不會(huì)自己去嘗試加載這個(gè)類,而是把這個(gè)請(qǐng)求委派給父類加載器去完成,每一個(gè)層次的類加載器都是如此,因此所有的加載請(qǐng)求最終都應(yīng)該傳送到頂層的啟動(dòng)類加載器中,只有當(dāng)父加載器反饋?zhàn)约簾o(wú)法完成這個(gè)加載請(qǐng)求時(shí),子加載器才會(huì)嘗試自己去加載。E正確
F.應(yīng)用程序類加載器(Application ClassLoader)負(fù)責(zé)加載用戶類路徑(ClassPath)上所指定的類庫(kù),不是所有的ClassLoader都加載此路徑。F錯(cuò)誤
答案匯總:
1、正確答案: C
2、正確答案: D
3、正確答案: D
4、正確答案: A
5、正確答案: B
6、正確答案: B
7、正確答案: B
8、正確答案: A C D
9、正確答案: B C D
10、正確答案: B D F
總結(jié)
本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Java文件選擇對(duì)話框JFileChooser使用詳解
這篇文章主要介紹了Java文件選擇對(duì)話框JFileChooser使用詳解的相關(guān)資料,需要的朋友可以參考下2015-07-07java線程并發(fā)cyclicbarrier類使用示例
CyclicBarrier類似于CountDownLatch也是個(gè)計(jì)數(shù)器,不同的是CyclicBarrier數(shù)的是調(diào)用了CyclicBarrier.await()進(jìn)入等待的線程數(shù),當(dāng)線程數(shù)達(dá)到了CyclicBarrier初始時(shí)規(guī)定的數(shù)目時(shí),所有進(jìn)入等待狀態(tài)的線程被喚醒并繼續(xù),下面使用示例學(xué)習(xí)他的使用方法2014-01-01Java字節(jié)緩存流的構(gòu)造方法之文件IO流
這篇文章主要介紹了Java字節(jié)緩存流的構(gòu)造方法之文件IO流,同時(shí)也介紹了字符流中的一些相關(guān)的內(nèi)容,并且通過大量的案例供大家理解。最后通過一些經(jīng)典的案例幫助大家對(duì)前面所學(xué)的知識(shí)做了一個(gè)綜合的應(yīng)用,需要的朋友可以參考一下2022-04-04Spring JdbcTemplate實(shí)現(xiàn)添加與查詢方法詳解
JdbcTemplate是Spring框架自帶的對(duì)JDBC操作的封裝,目的是提供統(tǒng)一的模板方法使對(duì)數(shù)據(jù)庫(kù)的操作更加方便、友好,效率也不錯(cuò),這篇文章主要介紹了Spring?JdbcTemplate執(zhí)行數(shù)據(jù)庫(kù)操作,需要的朋友可以參考下2022-11-11JAVA JDK8 List分組獲取第一個(gè)元素的方法
今天小編就為大家分享一篇關(guān)于JAVA JDK8 List分組獲取第一個(gè)元素的方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-12-12mybatis使用foreach查詢不出結(jié)果也不報(bào)錯(cuò)的問題
這篇文章主要介紹了mybatis使用foreach查詢不出結(jié)果也不報(bào)錯(cuò)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03Java 實(shí)戰(zhàn)項(xiàng)目錘煉之小區(qū)物業(yè)管理系統(tǒng)的實(shí)現(xiàn)流程
讀萬(wàn)卷書不如行萬(wàn)里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+jsp+mysql+maven實(shí)現(xiàn)一個(gè)小區(qū)物業(yè)管理系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平2021-11-11Spring中Bean對(duì)象的定義、注冊(cè)和獲取流程分析
這篇文章主要介紹了Spring中Bean對(duì)象的定義、注冊(cè)和獲取流程分析,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06