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的更多內容!