1. 程式人生 > 實用技巧 >牛客刷題2020年9月9日

牛客刷題2020年9月9日

牛客刷題2020年9月9日

  1. 下列說法正確的有()

    正確答案: A 你的答案: D (錯誤)

    陣列是一種物件
    陣列屬於一種原生類
    int number=[]={31,23,33,43,35,63}
    陣列的大小可以任意改變
    解釋:原生類是指Java中,資料型別分為基本資料型別(或叫做原生類、內建型別)和引用資料型別。->陣列是一種引用型別。
    
  2. 以下哪一項正則能正確的匹配網址: http://www.bilibili.com/video/av21061574 ()

    正確答案: B 你的答案: D (錯誤)

    /^(https?:\/\/)?([a-zA-Z\d]+).bilibili.com\/?video\/av(\D{1,8})\/?$/
    /^(http:\/\/)?(\w+)\.bilibili\.com\/?video\/av(\d{1,8})\/?$/
    /^(https?:\/\/)?(\w+)\.bilibili\.com\/?\w*$/
    /^(http:\/\/)?([a-zA-Z\d]+).bilibili.com\/?video\/av\w*\/+$/
    解釋:
    正則表示式的知識點:
    首先,^表示匹配輸入的開始,$表示匹配輸入的結束
    每個選項從前向後看,http都能夠嚴格匹配
    ?表示匹配某元素0次或1次,這裡四個選項都沒有問題,能夠匹配0次或1次字元s
    接下來:嚴格匹配,\/\/嚴格匹配兩個//
    接著往下看,[]表示字元集合,它用在正則表示式中表示匹配集合中的任一字元
    A D 選項中的 [a-zA-Z\d] 表示匹配一個小寫字母 或者 大寫字母 或者 數字
    B C 選項中的 \w 表示匹配字母數字或下劃線(注意這裡比A D中能多匹配下劃線型別)
    +表示匹配某元素1次或多次,到這裡四個選項都能夠完美匹配字元www
    .可以匹配除了換行符\n \r外的任何字元
    接下來我們看選項A,bilibili com video av都嚴格匹配,而 \D 表示匹配一個非數字字元而非數字字元,av後的數字是無法匹配成功的,A錯誤
    B選項,\d匹配數字,{m,n}表示最少匹配m次,最多匹配n次,\/?能匹配末尾的0個或1個/字元,B正確
    C選項,*表示匹配某元素0次或多次,但 \w 並不能匹配字元 /,C錯誤
    D選項,前面都對,錯在最後的\/+至少要匹配一個/,而原字串最後並沒有/
    
  3. 下面關於JAVA的垃圾回收機制,正確的是( )

    正確答案: B 你的答案: C (錯誤)

    當呼叫“System.gc()”來強制回收時,系統會立即回收垃圾
    垃圾回收不能確定具體的回收時間
    程式可明確地標識某個區域性變數的引用不再被使用
    程式可以顯式地立即釋放物件佔有的記憶體
    解釋:
    java提供了一個系統級的執行緒,即垃圾回收器執行緒。用來對每一個分配出去的記憶體空間進行跟蹤。當JVM空閒時,自動回收每塊可能被回收的記憶體,GC是完全自動的,不能被強制執行。程式設計師最多隻能用System.gc()來建議執行垃圾回收器回收記憶體,但是具體的回收時間,是不可知的。當物件的引用變數被賦值為null,可能被當成垃圾。
    
  4. String s = new String("xyz");建立了幾個StringObject?

    正確答案: A 你的答案: C (錯誤)

    兩個或一個都有可能
    兩個
    一個
    三個
    解釋:
    著重解釋:這種型別的題很容易考,考察的就是java的基礎牢固不牢固。具體可以看下解釋內容
    1.String物件的兩種建立方式:
    第一種方式: String str1 = "aaa"; 是在常量池中獲取物件("aaa" 屬於字串字面量,因此編譯時期會在常量池中建立一個字串物件),
    第二種方式: String str2 = new String("aaa") ; 一共會建立兩個字串物件一個在堆中,一個在常量池中(前提是常量池中還沒有 "aaa" 字串物件)。
    System.out.println(str1==str2);//false
    
    2.String型別的常量池比較特殊。它的主要使用方法有兩種:
    直接使用雙引號宣告出來的String物件會直接儲存在常量池中。
    如果不是用雙引號宣告的String物件,可以使用 String 提供的 intern 方法。 String.intern() 是一個 Native 方法,它的作用是: 如果執行時常量池中已經包含一個等於此 String 物件內容的字串,則返回常量池中該字串的引用; 如果沒有,則在常量池中建立與此 String 內容相同的字串,並返回常量池中建立的字串的引用。
    String s1 = new String("AAA");
    String s2 = s1.intern();
    String s3 = "AAA";
    System.out.println(s2);//AAA
    System.out.println(s1 == s2);//false,因為一個是堆記憶體中的String物件一個是常量池中的String物件,
    System.out.println(s2 == s3);//true, s2,s3指向常量池中的”AAA“
    
  5. 在Web應用程式中,( )負責將HTTP請求轉換為HttpServletRequest物件

    正確答案: C 你的答案: A (錯誤)

    Servlet物件
    HTTP伺服器
    Web容器
    JSP網頁
    解釋:
    servlet是執行在伺服器端的小應用程式,是接收網路服務的請求和產生響應的一種方式。
    servlet的功能:接受http請求,產生動態http響應。
    
  6. 對於檔案的描述正確的是( )

    正確答案: D 你的答案: B (錯誤)

    A 文字檔案是以“.txt”為字尾名的檔案,其他字尾名的檔案是二進位制檔案。
    B File類是Java中對檔案進行讀寫操作的基本類。
    C 無論文字檔案還是二進位制檔案,讀到檔案末尾都會丟擲EOFException異常。
    D Java中對於文字檔案和二進位制檔案,都可以當作二進位制檔案進行操作。
    解釋:
    A.檔案分為文字檔案和二進位制檔案,計算機只認識二進位制,所以實際上都是二進位制的不同解釋方式。文字檔案是以不同編碼格式顯示的字元,例如Ascii、Unicode等,window中文字檔案的字尾名有".txt",".log",各種程式語言的原始碼檔案等;二進位制檔案就是用文字文件開啟是看不懂亂碼,只要能用文字開啟的檔案都可以算是文字檔案,只是顯示的結果不是你想要的,二進位制檔案只有用特殊的應用才能讀懂的檔案,例如".png",".bmp"等,計算機中大部分的檔案還是二進位制檔案。
    B.File類是對檔案整體或者檔案屬性操作的類,例如建立檔案、刪除檔案、檢視檔案是否存在等功能,不能操作檔案內容;檔案內容是用IO流操作的。
    C.當輸入過程中意外到達檔案或流的末尾時,丟擲EOFException異常,正常情況下讀取到檔案末尾時,返回一個特殊值表示檔案讀取完成,例如read()返回-1表示檔案讀取完成。
    D.上面A選項已經說了,不論是文字檔案還是二進位制檔案,在計算機中都是以二進位制形式儲存的,所以都當做二進位制檔案讀取。
    

最後說一下final關鍵字吧:

1.final修飾變數,則等同於常量

2.final修飾方法中的引數,稱為最終引數。

3.final修飾類,則類不能被繼承

4.final修飾方法,則方法不能被重寫。

5.final 不能修飾抽象類

6.final修飾的方法可以被過載 但不能被重寫