Java日常練習題,每天進步一點點(27)

承蒙各位厚愛,我們一起每天進步一點點!(鼠標選中空白處查看答案)

1、與未加訪問控制符的缺省情況相比,public和protected修飾符擴大瞭屬性和方法的被訪問范圍,private修飾符則縮小瞭這種范圍。

正確答案: A

正確

錯誤

題解:
在這裡插入圖片描述

2、下列敘述錯誤的是( )

正確答案: D

在接口中定義的方法除瞭default和static關鍵字修飾的方法擁有方法體,其他方法都應是沒有方法體的抽象方法(JDK1.8以後)

一個java類隻能有一個父類,但可以實現多個接口

在類聲明中,用implements關鍵字聲明該類實現的接口

定義接口時使用implements關鍵字。

題解:
A、JDK8開始,接口中可以定義有方法體的方法,方法必須被default和static修飾。除此之外,其他方法都是抽象方法。
B、Java的語法是單繼承,但是繼承可以傳遞。其實B更準確一點是隻能有一個直接父類。
C、繼承用extends,實現用implements。先繼承後實現。
D、定義類是class,接口是interface。

3、能用來修飾interface的有()

正確答案: B

private

public

protected

static

題解:
java中接口隻能使用public修飾,接口內方法默認為public abstract

4、關於訪問權限,說法正確的是? ( )

正確答案: A

類A和類B在同一包中,類B有個protected的方法testB,類A不是類B的子類(或子類的子類),類A可以訪問類B的方法testB

類A和類B在同一包中,類B有個protected的方法testB,類A不是類B的子類(或子類的子類),類A不可以訪問類B的方法testB

訪問權限大小范圍:public > 包權限 > protected > private

訪問權限大小范圍:public > 包權限 > private > protected

題解:
private 權限限於同一個類中; default 權限限於同一個包中,即包權限=default權限; protected權限限於同一個包中,以及不在同一個包中的子類 public 權限在不同包中都可以
在這裡插入圖片描述

5、下列說法正確的有()

正確答案: A

能被java.exe成功運行的java class文件必須有main()方法

J2SDK就是Java API

Appletviewer.exe可利用jar選項運行.jar文件

能被Appletviewer成功運行的java class文件必須有main()方法

題解:
A:正確,main方法是入口
B:J2SDK當然不僅僅包含java API
C:jar選項是java.exe 的選項
D:Appletviewer是運行applet的, applet 不用main方法,繼承applet類即可。

6、Java數據庫連接庫JDBC用到哪種設計模式?

正確答案: B

生成器

橋接模式

抽象工廠

單例模式

題解:
橋接模式:
定義 :將抽象部分與它的實現部分分離,使它們都可以獨立地變化。
橋接模式所涉及的角色
1 . Abstraction :定義抽象接口,擁有一個Implementor類型的對象引用
2 . RefinedAbstraction :擴展Abstraction中的接口定義
3 . Implementor :是具體實現的接口,Implementor和RefinedAbstraction接口並不一定完全一致,實際上這兩個接口可以完全不一樣Implementor提供具體操作方法,而Abstraction提供更高層次的調用
4 . ConcreteImplementor :實現Implementor接口,給出具體實現
Jdk中的橋接模式:JDBC
JDBC連接 數據庫 的時候,在各個數據庫之間進行切換,基本不需要動太多的代碼,甚至絲毫不動,原因就是JDBC提供瞭統一接口,每個數據庫提供各自的實現,用一個叫做數據庫驅動的程序來橋接就行瞭

7、public void test() {

int a = 10;

System.out.println(a++ + a–);

}

最後輸出什麼?

正確答案: C

19

20

21

22

題解:
a++ + a– 等價於 10 + 11,a++ 先把10賦值給a 再+1 所以左邊是10 但此時a=11。右邊a– 也是先賦值 a=11,再進行-1操作,就沒啥影響瞭。所以10+11=21 最後a=10。

8、如何獲取ServletContext設置的參數值?

正確答案: B

context.getParameter()

context.getInitParameter()

context.getAttribute()

context.getRequestDispatcher()

題解:
getParameter()是獲取POST/GET傳遞的參數值;
getInitParameter獲取Tomcat的server.xml中設置Context的初始化參數
getAttribute()是獲取對象容器中的數據值;
getRequestDispatcher是請求轉發。

9、下面關於程序編譯說法正確的是()

正確答案: C

java語言是編譯型語言,會把java程序編譯成二進制機器指令直接運行

java編譯出來的目標文件與具體操作系統有關

java在運行時才進行翻譯指令

java編譯出來的目標文件,可以運行在任意jvm上

題解:
A: .java編譯成的是字節碼,再被各系統的jvm翻譯成本系統可以識別的機器碼,這就是java一次編程多平臺應用的跨平臺性
B: java源文件生成的是class文件,與系統無關
C: 註意字節碼和機器碼不是一回事 java程序在運行時字節碼才會被jvm翻譯成機 器碼,所以說java是解釋性語言
D: 註意jvm的版本

10、關於身份證號,以下正確的正則表達式為( )

正確答案: A C

A:isIDCard=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;

B:isIDCard=/^[1-9]\d{7}((9\d)|(1[0-2]))(([0|1|2]\d)|3[9-1])\d{3}$/;

C:isIDCard=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/;

D:isIDCard=/^[1-9]\d{5}[1-9]\d{3}((9\d)|(1[9-2]))(([0|1|2]\d)|3[9-1])\d{4}$/;

題解:
正確選項
A選項:isIDCard=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/
C選項:isIDCard=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/
^:起始符號,^x表示以x開頭
$:結束符號,x$表示以x結尾
[n-m]:表示從n到m的數字
\d:表示數字,等同於[0-9]
X{m}:表示由m個X字符構成,\d{4}表示4位數字
15位身份證的構成:六位出生地區碼+六位出身日期碼+三位順序碼
18位身份證的構成:六位出生地區碼+八位出生日期碼+三位順序碼+一位校驗碼
C選項的構成:
[1-9]\d{5}:六位出生地區碼,出生地區碼沒有以0開頭,因此第一位為[1-9]。
[1-9]\d{3}:八位出生日期碼的四位年份,同樣年份沒有以0開頭。
((0\d)|(1[0-2])):八位出生日期碼的兩位月份,| 表示或者,月份的形式為0\d或者是10、11、12。
(([0|1|2]\d)|3[0-1]):八位出生日期碼的兩位日期,日期由01至31。
\d{4}:三位順序碼+一位校驗碼,共四位。
A選項的構成:
[1-9]\d{7}:六位出生地區碼+兩位出生日期碼的年份,這裡的年份指後兩位,因此沒有第一位不能為0的限制,所以合並瞭。
後面的與C選項類似瞭。
其實我也是第一次知道身份證還有15位的。
一代身份證15位,二代18位。

答案匯總:

1、正確答案: A

2、正確答案: D

3、正確答案: B

4、正確答案: A

5、正確答案: A

6、正確答案: B

7、正確答案: C

8、正確答案: B

9、正確答案: C

10、正確答案: A C

總結

本篇文章就到這裡瞭,希望能給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!

推薦閱讀: