Java日常練習題,每天進步一點點(64)
承蒙各位厚愛,我們一起每天進步一點點?。ㄊ髽诉x中空白處查看答案)
1、關于容器下面說法正確的是? ( )
正確答案:D
A 列表(List)和集合(Set)存放的元素都是可重復的。
B 列表(List)和集合(Set)存放的元素都是不可重復的。
C 映射(Map)中key是可以重復的。
E 映射(Map)中value是可以重復的。
題解:
1、列表(List)的元素是有 序、可重復 的; 集合(Set)的元素是無序、不可重復的。
2、 List底層是數組存儲數據的,所以有序,可重復的 Set底層是HashMap,添加元素其實就是調用map的put()方法,添加的元素作為map的key,value是一個Object對象 而Hashmap底層是哈希表,數組+鏈表的形式,根據key的hashcode()方法獲取到的值與它的高16位進行一個異或運算,得到哈希值,再通過計算定位出它在數組中存放的位置,所以說是無序的,如果定位的位置有元素了,那就采用鏈地址法,就是比較hash值,如果有相同的新的值覆蓋掉舊的值,如果沒有,jdk1.7是新元素放在頭節(jié)點,jdk1.8是放在尾節(jié)點,當然jdk1.8新增了紅黑樹,這里就不說了 總之,map的key不可重復,value是可以重復的
3、 list 存放的元素可重復, set 不可以。 map 使用的是鍵值對存放,可一對多,key不重復,value可重復
2、應用程序的main方法中有以下語句,則輸出的結果( ) String s1=new String( ” xyz ” ); String s2=new String( ” xyz ” ); Boolean b1=s1.equals(s2); Boolean b2=(s1==s2); System .out.print(b1+ ” ” +b2);
正確答案:A
A true false
B false true
C true true
D false false
題解:
1、又錯了的人來回答一下: String a = “a”; String b = “a”; 這樣定義的a和b指向的是字符串常量區(qū)變量,地址是一樣的,即用equals為true,用==也為true。 但是 String a =new String( “a”); String b = new String( “a”); 這樣是定義了兩個堆內存對象,只能equals,不能==
2、 String s1=new String( ” xyz ” ); //創(chuàng)建了String類型的內容為xyz的s1對象 String s2=new String( ” xyz ” ); //創(chuàng)建了String類型的內容為xyz的s2對象 Boolean b1=s1.equals(s2); //比較s1對象和s2對象的內容相等,返回true。 Boolean b2=(s1==s2); //比較s1和s2兩個對象的存儲地址是否相等,明顯兩者分別存儲在不同的地址,所以返回:false。 故答案為:true false
3、當你編譯和運行下面的代碼時,會出現下面選項中的哪種情況? public class Pvf{
static boolean Paddy; public static void main(String args){ System.out.println(Paddy); } }
正確答案:B
A 編譯時錯誤
B 編譯通過并輸出結果false
C 編譯通過并輸出結果true
D 編譯通過并輸出結果null
題解:
1、 成員變量有默認初始值,可以不用賦值,boolean的默認值為false, 局部變量必須賦值。否則編譯錯誤。
4、下列哪些語句關于內存回收的說明是正確的? ( )
正確答案:B
A 程序員必須創(chuàng)建一個線程來釋放內存
B 內存回收程序負責釋放無用內存
C 內存回收程序允許程序員直接釋放內存
D 內存回收程序可以在指定的時間釋放內存對象
題解:
1、選B。 A、JVM一旦啟動,就會創(chuàng)建一個守護線程來監(jiān)測是否需要有對象內存被釋放。 C、無法直接釋放。 D、不可以指定時間,System.gc(),只是提醒JVM可以進行一次Full GC,但是什么時候真正執(zhí)行,還是不知道的。
2、 在空閑時間以不定時的方式動態(tài)回收無任何引用的對象占據的內存空間
3、 程序 程序員 因缺思聽,看混
5、關于 Socket 通信編程,以下描述錯誤的是:( )
正確答案:D
A 服務器端通過new ServerSocket()創(chuàng)建TCP連接對象
B 服務器端通過TCP連接對象調用accept()方法創(chuàng)建通信的Socket對象
C 客戶端通過new Socket()方法創(chuàng)建通信的Socket對象
D 客戶端通過new ServerSocket()創(chuàng)建TCP連接對象
題解:
1、Socket套接字 就是源Ip地址,目標IP地址,源端口號和目標端口號的組合 服務器端:ServerSocket提供的實例 ServerSocket server= new ServerSocket(端口號) 客戶端:Socket提供的實例 Socket soc=new Socket(ip地址,端口號)
6、JVM內存不包含如下哪個部分( )
正確答案:D
A Stacks
B PC寄存器
C Heap
D Heap Frame
題解:
1、JVM內存五大區(qū)域:
2、 PC寄存器即程序計數器
7、下面有關servlet service描述錯誤的是?
正確答案:B
A 不管是post還是get方法提交過來的連接,都會在service中處理
B doGet/doPost 則是在 javax.servlet.GenericServlet 中實現的
C service()是在javax.servlet.Servlet接口中定義的
D service判斷請求類型,決定是調用doGet還是doPost方法
題解:
1、 doget/dopost與Http協(xié)議有關,是在 javax.servlet.http.HttpServlet 中實現的
2、 GenericServlet 抽象類 給出了設計 servlet 的一些骨架,定義了 servlet 生命周期,還有一些得到名字、配置、初始化參數的方法,其設計的是和應用層協(xié)議無關的
8、下面哪些具體實現類可以用于存儲鍵,值對,并且方法調用提供了基本的多線程安全支持:( )
正確答案:AE
A java.util.ConcurrentHashMap
B java.util.Map
C java.util.TreeMap
D java.util.SortMap
E java.util.Hashtable
F java.util.HashMap
題解:
1、線程安全的類有hashtable concurrentHashMap synchronizedMap
2、 java.util.concurrent.ConcurrentHashMap 線程安全 java.util.Map 接口 java.util.TreeMap java.util.SortedMap 接口 java.util.Hashtable 線程安全 java.util.HashMap
3、 ConcurrentHashMap 鍵值對不可以為空,線程安全 java.util.Map是一個接口 java.util.TreeMap 鍵值對不可以為空,非線程安全 java.util.SortedMap 這是個接口并且擴展了Map接口,它確保條目按升序鍵維護。 java.util.Hashtable 鍵值對不可以為空,線程安全 java.util.HashMap鍵值對可以為空,非線程安全
9、
Consider the following code: Integer s=new Integer(9);
Integer t=new Integer(9);
Long u=new Long(9);Which test would return true?
正確答案:CDE
A (s==u)
B (s==t)
C (s.equals(t))
D (s.equals(9))
E (s.equals(new Integer(9))
題解:
1、 int和int之間,用==比較,肯定為true?;緮祿愋蜎]有equals方法 int和Integer比較,Integer會自動拆箱,==和 equals都肯定為true int和new Integer比較,Integer會自動拆箱,調用intValue方法
2、 所以 == 和 equals都肯定為true Integer和Integer比較的時候,由于直接賦值的話會進行自動的裝箱。所以當值在-128
3、127中的時候,由于值緩存在IntegerCache中,那么當賦值在這個區(qū)間的時候,不會創(chuàng)建新的Integer對象,而是直接從緩存中獲取已經創(chuàng)建好的Integer對象。而當大于這個區(qū)間的時候,會直接new Integer。 當Integer和Integer進行==比較的時候,在-128
4、127區(qū)間的時候,為true。不在這個區(qū)間,則為false 當Integer和Integer進行equals比較的時候,由于Integer的equals方法進行了重寫,比較的是內容,所以為true Integer和new Integer : new Integer會創(chuàng)建對象,存儲在堆中。而Integer在-128
10、下面幾個關于Java里queue的說法哪些是正確的()?
正確答案:AC
A LinkedBlockingQueue是一個可選有界隊列,不允許null值
B PriorityQueue,LinkedBlockingQueue都是線程不安全的
C PriorityQueue是一個無界隊列,不允許null值,入隊和出隊的時間復雜度是O(log(n))
D PriorityQueue,ConcurrentLinkedQueue都遵循FIFO原則
題解:
1、正確答案 AC 答案解析 A、LinkedBlockingQueue是一個基于節(jié)點鏈接的可選是否有界的阻塞隊列,不允許null值。 B、LinkedBlockingQueue是一個線程安全的阻塞隊列,實現了先進先出等特性。 C、PriorityQueue是一個隊列,不允許null值,入隊和出隊的時間復雜度是O(log(n))。 D、PriorityQueue是不同于先進先出隊列的另一種隊列。每次從隊列中取出的是具有最高優(yōu)先權的元素。ConcurrentLinkedQueue是一個基于鏈接節(jié)點的線程安全隊列,該隊列的元素遵循FIFO原則。
答案匯總:
1、正確答案:D
2、正確答案:A
3、正確答案:B
4、正確答案:B
5、正確答案:D
6、正確答案:D
7、正確答案:B
8、正確答案:AE
9、正確答案:CDE
10、正確答案:AC
總結
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內容!
相關文章
解讀System.getProperty("ENM_HOME")中的值從哪獲取的
這篇文章主要介紹了解讀System.getProperty("ENM_HOME")中的值從哪獲取的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12解決persistence.xml配置文件修改存放路徑的問題
這篇文章主要介紹了解決persistence.xml配置文件修改存放路徑的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02簡單了解JAVA SimpleDateFormat yyyy和YYYY的區(qū)別
這篇文章主要介紹了簡單了解JAVA SimpleDateFormat yyyy和YYYY的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-03-03