Java日常練習(xí)題,每天進(jìn)步一點點(10)
承蒙各位厚愛,我們一起每天進(jìn)步一點點?。ㄊ髽?biāo)選中空白處查看答案)
1、在運行時,由java解釋器自動引入,而不用import語句引入的包是()。
正確答案: A
java.lang
java.system
java.io
java.util
題解:
java.lang包是java語言包,是自動導(dǎo)入的。
java.util包是java的工具包,需要手動導(dǎo)入。
java.sql包,JDBC接口類,需要手動導(dǎo)入。
java.io;各種輸入輸入流,需要手動導(dǎo)入。
system是類(java.lang.sysytem)不是包,是屬于java.lang包下的
2、以下關(guān)于集合類ArrayList、LinkedList、HashMap描述錯誤的是()
正確答案: C
HashMap實現(xiàn)Map接口,它允許任何類型的鍵和值對象,并允許將null用作鍵或值
ArrayList和LinkedList均實現(xiàn)了List接口
添加和刪除元素時,ArrayList的表現(xiàn)更佳
ArrayList的訪問速度比LinkedList快
題解:
1.List 是一個有序集合,可以存放重復(fù)的數(shù)據(jù) (有序:存進(jìn)是什么順序,取出時還是什么順序)
(1).ArrayList 底層是數(shù)組適合查詢,不適合增刪元素。
(2).LiskedList 底層是雙向鏈表適合增刪元素,不適合查詢操作。
(3).Vector 底層和ArrayList相同,但是Vector是線程安全的,效率較低很少使用
2.Set 是一個無序集合,不允許放重復(fù)的數(shù)據(jù) (無序不可重復(fù),存進(jìn)和取出的順序不一樣)
(1).HashSet 底層是哈希表/散列表
(2).TreeSet 繼承sartedSet接口(無需不可重復(fù),但存進(jìn)去的元素可以按照元素的大小自動排序)
3.Map 是一個無序集合,以鍵值對的方式存放數(shù)據(jù),鍵對象不允許重復(fù),值對象可以重復(fù)。
(1).HashMap實現(xiàn)不同步,線程不安全。 HashTable線程安全
(2).HashMap中的key-value都是存儲在Entry中的。
(3).HashMap可以存null鍵和null值,不保證元素的順序恒久不變,它的底層使用的是數(shù)組和鏈表,通過hashCode()方法和equals方法保證鍵的唯一性
3、列表(List)和集合(Set)下面說法正確的是? ( )
正確答案: A
Set中至多只能有一個空元素
List中至多只能有一個空元素
List和Set都可以包含重復(fù)元素的有序集合
List和Set都是有序集合
題解:
Set 不能有重復(fù)的元素,且是無序的,要有空值也就只能有一個。因為它不允許重復(fù)。 L ist 可以有重復(fù)元素,且是有序的,要有空值也可以有多個,因為它可重復(fù)
Set無序,List有序,
4、以下程序的運行結(jié)果是?
正確答案: A
foobar
barfoo
foobar或者barfoo都有可能
Bar
Foo
程序無法正常運行
題解:
這道題是考線程的調(diào)用情況,線程的啟動方式只能通過start這種方式啟動才能真正的實現(xiàn)多線程的效果,如果是手動調(diào)用run方法和普通方法調(diào)用沒有區(qū)別,所以這個還是按照順序執(zhí)行首先執(zhí)行run方法之后,執(zhí)行輸出語句所以最終得到結(jié)果foobar.
如果是調(diào)用start()后,線程會被放到等待隊列,等待CPU調(diào)度,并不一定要馬上開始執(zhí)行,只是將這個線程置于可動行狀態(tài)。然后通過JVM,線程Thread會調(diào)用run()方法,執(zhí)行本線程的線程體。
1.start()方法來啟動線程,真正實現(xiàn)了多線程運行。這時無需等待run方法體代碼執(zhí)行完畢,可以直接繼續(xù)執(zhí)行下面的代碼;
2.run()方法當(dāng)作普通方法的方式調(diào)用。程序還是要順序執(zhí)行,要等待run方法體執(zhí)行完畢后,才可繼續(xù)執(zhí)行下面的代碼, 這樣就沒有達(dá)到寫線程的目的。
5、下面程序的輸出結(jié)果是什么。
public class A2{ public static void main(String[] args){ int[] a={2,4,6,8,3,6,9,12}; doSomething(a,0,a.length-1); for(int i=0;i<=a.length-1;i++) System.out.print(a[i]+" "); } private static void doSomething(int[] a,int start,int end){ if(start<end){ int p=core(a,start,end); doSomething(a,start,p-1); doSomething(a,p+1,end); } } private static int core(int[] a,int start,int end) { int x=a[end]; int i=start; for(int j=start;j<=end-1;j++){ if(a[j]>=x){ swap(a,i,j); i++;//交換了幾次 } }//把最大的放到最后 swap(a,i,end);//把最大的放到i的位置 return i; } private static void swap(int[] a,int i,int j) { int tmp=a[i]; a[i]=a[j]; a[j]=tmp; } }
正確答案: C
找到最大值
找到最小值
從大到小的排序
從小到大的排序
題解:
是快速排序的另一種實現(xiàn)
注釋誤導(dǎo),直接看core函數(shù)就會發(fā)現(xiàn)它是實現(xiàn)快速排序的一個階段 這里a[j]≥x對應(yīng)從大到小排序;若改為a[j]<=x則對應(yīng)從小到大排序
6、
public class Test { public int x; public static void main(String []args) { System. out. println("Value is" + x); } }
對于上面這段代碼,以下說法正確的是:
正確答案: C
程序會打出 “Value is 0”
程序會拋出 NullPointerException
非靜態(tài)變量不能夠被靜態(tài)方法引用
編譯器會拋出 "possible reference before assignment"的錯誤
題解:
非靜態(tài)成員只能被類的實例化對象引用,因此這里在靜態(tài)方法中訪問x會造成編譯出錯
7、從運行層面上來看,從四個選項選出不同的一個。
正確答案: B
JAVA
Python
objectC
C#
題解:
A,C,D都是類C語言,B不是
Python是解釋執(zhí)行的,其他語言都需要先編譯
8、下面哪些標(biāo)識符是正確的?
正確答案: A B
MyWorld
parseXML
–value
&maybe
題解:
標(biāo)識符定義規(guī)則:
1.不能數(shù)字開頭
2.標(biāo)識符用$,_,字母,數(shù)字組成
3.不能用java關(guān)鍵字,保留字(關(guān)鍵字都是小寫的)
4.不能用true,false,null來定義標(biāo)識符
5.java大小寫敏感
6.沒有長度限制
9、下列哪個是合法的 Java 標(biāo)識符?( )
正確答案: B C
Tree&Glasses
FirstJavaApplet
First_Applet
273.5
題解:
Java標(biāo)識符:
標(biāo)識符由26個英文字符大小寫(az,AZ)、數(shù)字(0~9)、下劃線(_)和美元符號($)組成;
不能以數(shù)字開頭,不能是關(guān)鍵字;
嚴(yán)格區(qū)分大小寫;
標(biāo)識符的可以為任意長度;
10、以下說法中正確的有?
正確答案: A D
StringBuilder是 線程不安全的
Java類可以同時用 abstract和final聲明
HashMap中,使用 get(key)==null可以 判斷這個Hasmap是否包含這個key
volatile關(guān)鍵字不保證對變量操作的原子性
題解:
A.StringBuilder線程不安全,StringBuffer線程安全。
B.同時用 abstract和final就會自相矛盾。
C.Hashmap中的value可以之null,get(key)==null有兩種情況,一是key不存在,二是該key中存的是null,所以應(yīng)該使用map.containskey(key)返回的true/false來判斷是否存在這個key。
D.volatile關(guān)鍵字有兩個作用:
1.并發(fā)環(huán)境可見性:volatile修飾后的變量能夠保證該變量在線程間的可見性,線程進(jìn)行數(shù)據(jù)的讀寫操作時將繞開工作內(nèi)存(CPU緩存)而直接跟主內(nèi)存進(jìn)行數(shù)據(jù)交互,即線程進(jìn)行讀操作時直接從主內(nèi)存中讀取,寫操作時直接將修改后端變量刷新到主內(nèi)存中,這樣就能保證其他線程訪問到的數(shù)據(jù)是最新數(shù)據(jù)
2.并發(fā)環(huán)境有序性:通過對volatile變量采取內(nèi)存屏障(Memory barrier)的方式來防止編譯重排序和CPU指令重排序,具體方式是通過在操作volatile變量的指令前后加入內(nèi)存屏障,來實現(xiàn)happens-before關(guān)系,保證在多線程環(huán)境下的數(shù)據(jù)交互不會出現(xiàn)紊亂。
abstract修飾的類是抽象類,是可以繼承的,而final修飾的類表示不能再被繼承,故肯定不能共同使用。故B錯。
HashMap中提供的get(key)獲取的是變量,無法判斷是否存在key。所以C是錯的
volatile關(guān)鍵字是一種輕量級的同步機(jī)制,只保證數(shù)據(jù)的可見性,而不保證數(shù)據(jù)的原子性。故D對
答案匯總:
1、正確答案: A
2、正確答案: C
3、正確答案: A
4、正確答案: A
5、正確答案: C
6、正確答案: C
7、正確答案: B
8、正確答案: A B
9、正確答案: B C
10、正確答案: A D
總結(jié)
本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Mybatis-plus:${ew.sqlselect}用法說明
這篇文章主要介紹了Mybatis-plus:${ew.sqlselect}用法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06JavaWeb搭建網(wǎng)上圖書商城畢業(yè)設(shè)計
這篇文章主要介紹了JavaWeb搭建網(wǎng)上圖書商城框架,特別適合正在為網(wǎng)上商城畢業(yè)設(shè)計煩惱的同學(xué),需要的朋友可以參考下2015-11-11Springboot?hibernate-validator?6.x快速校驗示例代碼
這篇文章主要介紹了Springboot?hibernate-validator?6.x校驗,本文以6.2.1.Final版本為例解決了log4j版本的漏洞問題,通過實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-12-12Java實現(xiàn)Fibonacci(斐波那契)取余的示例代碼
這篇文章主要介紹了Java實現(xiàn)Fibonacci取余的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03