一姓惑、 關于抽象類敘述正確的是段誊? (B)
A.抽象類不能實現(xiàn)接口
B.抽象類必須有“abstract class”修飾
C.抽象類必須包含抽象方法
D.抽象類也有類的特性俯画,可以被實例化
答案:B
解析:
- A.抽象類是可以實現(xiàn)接口的蜕径,而且抽象類也可以繼承自抽象類
- B.對
- C.抽象類指有abstract修飾的class两踏,其可以包含抽象方法,也可以不包含
- D.抽象類和接口都是不能被實例化的兜喻,只有具體的類才可以被實例化
interface A{
public void oneFun();
}
//抽象類可以實現(xiàn)接口
abstract class B implements A{
public void twoFun(){}
}
//抽象類可以繼承抽象類
abstract class C extends B{
}
public class Test01 {
public static void main(String[] args) {
//嘗試實例化抽象類梦染,報錯
B b = new B();
}
}
二、 下列說法正確的有(A)
A.數(shù)組是一種對象
B.數(shù)組屬于一種原生類
C.int number=[]={31,23,33,43,35,63}
D.數(shù)組的大小可以任意改變
解析:
- java眼中朴皆,萬物皆為對象弓坞,數(shù)組自然是對象隧甚。
- 原生類是指Java中,數(shù)據(jù)類型分為基本數(shù)據(jù)類型(或叫做原生類渡冻、內置類型)和引用數(shù)據(jù)類型戚扳。
- java中的數(shù)組的定義就是相同類型,固定長度的一組數(shù)據(jù)族吻,一旦被初始化浑度,長度不可更改田巴。
三檐迟、 在java中卖鲤,已定義兩個接口B和C,要定義一個實現(xiàn)這兩個接口的類巍举,語句為:
class A implements B脆荷,C
四、 指出下來程序運行的結果是:
public class Example {
String str = new String("good");
char[] ch = {'a','b','c'};
public static void main(String[] args) {
Example ex = new Example();
ex.change(ex.str,ex.ch);
System.out.print(ex.str + " and ");
System.out.println(ex.ch);
}
private void change(String str, char[] ch) {
str = "test ok";
ch[0] = 'g';
}
}
結果:good and gbc
- 因為String是被final修飾的類懊悯,所以本身的內容是不會改變的蜓谋,相當于基本數(shù)據(jù)類型的值傳遞,在changge方法中給str賦值了“test”炭分,相當于重新創(chuàng)建了一個string類型的變量.
五桃焕、 Java 語言用以下哪個類來把基本類型數(shù)據(jù)封裝為對象()
A.包裝類
B.Class
C.int number=[]={31,23,33,43,35,63}
D.數(shù)組的大小可以任意改變
答案:A
解析:
-
java的數(shù)據(jù)類型分為兩大類:基本類型和引用類型;
基本類型只能保存一些常量數(shù)據(jù)捧毛,引用類型除了可以保存數(shù)據(jù)观堂,還能提供操作這些數(shù)據(jù)的功能;
為了操作基本類型的數(shù)據(jù)呀忧,java也對它們進行了封裝师痕, 得到八個類,就是java中的基本類型的封裝類而账;
八種基本類型: byte short int long float double char boolean
對應的包裝類 : Byte Short Integer Long Float Double Character Boolean
六七兜、 使用mvc模式設計的web應用程序具有以下優(yōu)點,除了?
A.可維護行強
B.可擴展性強
C.代碼重復少
D.大大減少代碼量
答案:D
解析:
MVC全名是Model View Controller福扬,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設計典范惜犀,用一種業(yè)務邏輯铛碑、數(shù)據(jù)、界面顯示分離的方法組織代碼虽界,將業(yè)務邏輯聚集到一個部件里面汽烦,在改進和個性化定制界面及用戶交互的同時,不需要重新編寫業(yè)務邏輯莉御。
MVC被獨特的發(fā)展起來用于映射傳統(tǒng)的輸入撇吞、處理和輸出功能在一個邏輯的圖形化用戶界面的結構中俗冻。
-
MVC只是將分管不同功能的邏輯代碼進行了隔離,增強了可維護和可擴展性牍颈,增強代碼復用性迄薄,因此可以減少代碼重復。但是不保證減少代碼量煮岁,多層次的調用模式還有可能增加代碼量讥蔽。
七、 假設如下代碼中画机,若t1線程在t2線程啟動之前已經(jīng)完成啟動冶伞。代碼的輸出是()
public static void main(String[]args)throws Exception {
final Object obj = new Object();
Thread t1 = new Thread() {
public void run() {
synchronized (obj) {
try {
obj.wait();
System.out.println("Thread 1 wake up.");
} catch (InterruptedException e) {
}
}
}
};
t1.start();
Thread.sleep(1000);
Thread t2 = new Thread() {
public void run() {
synchronized (obj) {
obj.notifyAll();
System.out.println("Thread 2 sent notify.");
}
}
};
t2.start();
}
A.Thread 1 wake up.Thread 2 sent notify.
B.Thread 2 sent notify.Thread 1 wake up.
C.A、B皆有可能
D.程序無輸出卡死
答案:B
解析:
執(zhí)行obj.wait();時已釋放了鎖步氏,所以t2可以再次獲得鎖响禽,然后發(fā)消息通知t1執(zhí)行,但這時t2還沒有釋放鎖荚醒,所以肯定是執(zhí)行t2芋类,然后釋放鎖,之后t1才有機會執(zhí)行腌且。
八梗肝、下列 java 程序輸出結果為______。
int i=0;
Integer j = new Integer(0);
System.out.println(i==j);
System.out.println(j.equals(i));
A.true,false
B.true,true
C.false,true
D.false,false
E.對于不同的環(huán)境結果不同
F.程序無法執(zhí)行
答案:B
解析:
本題是一個自動拆裝箱的考題(自動拆裝箱JDK需在1.5上):
基本型和基本型封裝型進行“==”運算符的比較铺董,基本型封裝型將會自動拆箱變?yōu)榛拘秃笤龠M行比較巫击,因此Integer(0)會自動拆箱為int類型再進行比較,顯然返回true精续;
兩個Integer類型進行“==”比較坝锰,如果其值在-128至127,那么返回true重付,否則返回false, 這跟Integer.valueOf()的緩沖對象有關顷级,這里不進行贅述。
兩個基本型的封裝型進行equals()比較确垫,首先equals()會比較類型弓颈,如果類型相同,則繼續(xù)比較值删掀,如果值也相同翔冀,返回true。
-
基本型封裝類型調用equals(),但是參數(shù)是基本類型披泪,這時候纤子,先會進行自動裝箱,基本型轉換為其封裝類型,再進行3中的比較控硼。
九、有關線程的敘述正確的是()
A.可以獲得對任何對象的互斥鎖定
B.通過繼承Thread類或實現(xiàn)Runnable接口说订,可以獲得對類中方法的互斥鎖定
C.線程通過調用對象的synchronized方法可獲得對象的互斥鎖定
D.線程調度算法是平臺獨立的
答案:C D
解析:
- 1.“任何對象”鎖定抄瓦,太絕對了,你能鎖住你沒有權限訪問的對象嗎陶冷?
- 2.前半句話講的是創(chuàng)建線程的方式钙姊,后半句講的是鎖定,驢頭不對馬嘴埂伦。
- 3.正確
- 4.線程調度分為協(xié)同式調度和搶占式調度煞额,Java使用的是搶占式調度,也就是每個線程將由操作系統(tǒng)來分配執(zhí)行時間沾谜,線程的切換不由線程本身來決定(協(xié)同式調度)膊毁。這就是平臺獨立的原因。
十基跑、Java程序的種類有( )
A.類(Class)
B.Applet
C.Application
D.Servlet
答案:B C D
解析:
Java程序的種類有:
(a)內嵌于Web文件中婚温,由瀏覽器來觀看的_Applet
(b)可獨立運行的 Application
(c)服務器端的 Serverlets