Java每日一題


1、(單選題)
What will be printed when you execute the following code?

class C {
  C() {
    System.out.print("C");
  }
}
class A {
  C c = new C();
  A() {
    this("A");
    System.out.print("A");
  }
  A(String s) {
    System.out.print(s);
  }
}
class Test extends A {
  Test() {
    super("B");
    System.out.print("B");
  }
  public static void main(String[] args) {
    new Test();
  }
}

A、BB B、CBB C、BAB D、None of the above
正確答案是:B
解析:
初始化過程是這樣的:
1.首先,初始化父類中的靜態成員變量和靜態代碼塊,按照在程序中出現的順序初始化;
2.然后,初始化子類中的靜態成員變量和靜態代碼塊,按照在程序中出現的順序初始化;
3.其次,初始化父類的普通成員變量和代碼塊,在執行父類的構造方法;
4.最后,初始化子類的普通成員變量和代碼塊,在執行子類的構造方法;

(1)初始化父類的普通成員變量和代碼塊,執行 C c = new C(); 輸出C
(2)super("B"); 表示調用父類的構造方法,不調用父類的無參構造函數,輸出B
(3) System.out.print("B");
所以輸出CBB
2、(單選題)
以下程序執行的結果是:

class X{
  Y y=new Y();
  public X(){
    System.out.print("X");
  }
}
class Y{
  public Y(){
    System.out.print("Y");
  }
}
public class Z extends X{
  Y y=new Y();
  public Z(){
    System.out.print("Z");
  }
  public static void main(String[] args) {
    new Z();
  }
}

A、ZYXX B、ZYXY C、YXYZ D、XYZX
正確答案:C
解析:
初始化過程:
1. 初始化父類中的靜態成員變量和靜態代碼塊 ;
2. 初始化子類中的靜態成員變量和靜態代碼塊 ;
3.初始化父類的普通成員變量和代碼塊,再執行父類的構造方法;
4.初始化子類的普通成員變量和代碼塊,再執行子類的構造方法;
(1)初始化父類的普通成員變量和代碼塊,執行 Y y=new Y(); 輸出Y
(2)再執行父類的構造方法;輸出X
(3) 初始化子類的普通成員變量和代碼塊,執行 Y y=new Y(); 輸出Y
(4)再執行子類的構造方法;輸出Z
所以輸出YXYZ
3、(不定項選擇題) 以下關於final關鍵字說法錯誤的是
A、 final是java中的修飾符,可以修飾類、接口、抽象類、方法和屬性
B、 final修飾的類肯定不能被繼承
C 、final修飾的方法不能被重載
D、 final修飾的變量不允許被再次賦值
正確答案是AC
解析:
final修飾類、方法、屬性!不能修飾抽象類,因為抽象類一般都是需要被繼承的,final修飾后就不能繼承了。
final修飾的方法不能被重寫而不是重載!
final修飾屬性,此屬性就是一個常量,不能被再次賦值!

(單選題)4、下列對繼承的說法,正確的是()
A 子類能繼承父類的所有方法和狀態
B 子類繼承父類的非私有方法和狀態
C 子類只能繼承父類的public方法和狀態
D 子類只能繼承父類的方法
答案是:B
解析:子類不能繼承父類的所有方法和屬性 ,只能繼承父類所有的非 private(私有)的屬性和方法,而private成員是不能被繼承的。

(單選題)5、以下的變量定義語句中,合法的是()
A byte=128
B boolean=null
C long a=123L
D double=0.9239d
答案是:C
解析:Abyte能表示的范圍[-128,127] B boolean的取值只能是true或false C 對的 D少了變量名


(單選題)6、abstract和final可以同時作為一個類的修飾符。( )
A 正確
B 錯誤
答案是:B
解析:abstract修飾一個類,這個類肯定可以被繼承,但是final類是不能繼承的,所以有矛盾,肯定不能同時用
(單選題)
7、A派生出子類B,B派生出子類C,並且在java源代碼中有如下聲明:
1
2
3
1.A a0=new A();
2.A a1=new B();
3.A a2=new C();
以下哪個說法是正確的?
1/1
A 第1行,第2行和第3行的聲明都是正確的
B 第1,2,3行都能通過編譯,但第2,3行運行時出錯
C 第1,2行能通過編譯,但第3行編譯出錯
D 只有第1行能通過編譯
答案是:A
解析:繼承具有多態性,可以是本類的引用指向本類對象,也可以是本類的引用指向子類對象
(單選題) 8、檢查程序,是否存在問題,如果存在指出問題所在,如果不存在,說明輸出結果。

packagealgorithms.com.guan.javajicu; 
public class Inc { 
    public staticvoid main(String[] args) { 
        Incinc = newInc(); 
        inti = 0; 
        inc.fermin(i); 
        i=i ++; 
        System.out.println(i);

    } 
    void fermin(inti){ 
        i++; 
    } 
}    

A 0 B 1 C 2 D 3
答案是:A
解析:關於第一個陷阱:為何方法沒有對i做出改變。因為java傳參是值傳遞,而且i是一個基本類型變量。java復制了一個i的值給方法,方法自始自終只是在操作這個副本,對原本的i沒有影響。 第二個陷阱:為何后綴的自增長也沒有改變i的值。因為i=i++;是先把i本身的值(0)賦給等式左邊那個i,然后再加一。
(不定項選擇題) 9、面向對象的三個基本元素是什么?1/1
A 封裝B 繼承C 重載D 多態
答案是:ABD
解析:
三個基本元素:封裝,繼承,多態。
五個基本原則:單一職責原則,開放封閉原則,里氏替換原則,依賴倒置原則,接口隔離原則
(填空題)
10、在 Java 程序中定義的類有兩部分組成,分別是: (1) 、 (2)
答案是:(1)屬性(2) 方法

(單選題)
11、覆蓋與重載的關系是( )
A 覆蓋只有發生在父類與子類之間,而重載可以發生在同一個類中
B 覆蓋方法和重載方法都可以不同名,也可以同名
C final修飾的方法可以被覆蓋,但不能被重載
D 覆蓋與重載是同一回事
正確答案是:A
解析:方法的重載是指在一個類中存在這樣的一些方法(包含從父類繼承而來的方法),方法名稱一樣,但是參數的個數不同,或者參數個數相同,但對應的參數類型不同,這些同名的方法為重載; 而覆蓋是指一個子類對其父類中的某個可見方法進行了重新的定義,即重新定義的方法滿足名稱相同,參數相同以及對應的參數相同的條件。這樣,調用時將會調用子類中的方法,而不會調用父類中被覆蓋的方法。
(單選題)
12、this代表了()的對象引用,super表示的是當前對象的()對象?
A 當前類當前類
B 當前類的父類當前類
C 當前類當前類的父類
D 以上都不正確
正確答案是:C
解析:this代表當前對象,也就是當前類的對象的引用
super代表其父類對象
(單選題)
13、Java中equal和==的區別是什么?

publicclassTest1{
    public static void main(String args[]){
        String a="1234";
        String b="1234";
        String c = newString("1234");
        System.out.println(a==b);
        System.out.println(a==c);
        System.out.println(a.equals(c));
    }
}

A true false true
B true true false
C true false false
D true true true
正確答案是:A
解析:第一次String a="1234"時,會在常量池中創建一個常量1234,String b=1234時,常量池中已經有了該常量,所以直接取,a和b的地址一樣,所以地址值相等;String c = newString("1234")重新new了對象,在堆內存中開辟了新的空間,所以地址值不想等,而equals方法比較的是值是否相等
(單選題) 14、cnt的值是

publicclassTest{
    static int cnt = 6;
    static{
        cnt+= 9;
    }
    public  static void main(String[] args){
        System.out.println(“cnt =” + cnt);
    }
    static{
        cnt /=3;
    };
}            

A cnt=5
B cnt=2
C cnt=3
D cnt=6
正確答案是:A
解析:
在JVM調用mian方法之前先用進行靜態內容的初始化。順序為:父類的靜態變量, 父類的靜態代碼塊 ,子類的靜態變量,子類的靜態代碼塊。
(單選題)
15、下列 java 程序輸出結果為______。

int i=0;
Integer j = newInteger(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 對於不同的環境結果不同
F 程序無法執行
正確答案是:B
解析:
①無論如何,Integer與new Integer不會相等。不會經歷拆箱過程.
②兩個都是非new出來的Integer,如果數在-128到127之間,則是true,否則為false
java在編譯Integer i2 = 128的時候,被翻譯成-> Integer i2 = Integer.valueOf(128);而valueOf()函數會對-128到127之間的數進行緩存
③兩個都是new出來的,都為false
int和Integer(無論new否)比,都為true,因為會把Integer自動拆箱為int再去比

 (單選題)  16、對於上面這段代碼,以下說法正確的是:
publicclassTest{
    public int x;
    public static void main(String []args){
        System.out. println("Value is"+ x);
    }
}
A 程序會打出 "Value is 0"
B 程序會拋出 NullPointerException
C 非靜態變量不能夠被靜態方法引用
D 編譯器會拋出 "possible reference before assignment"的錯誤
正確答案是:C
解析:非靜態成員只能被類的實例化對象引用,因此這里在靜態方法中訪問x會造成編譯出錯
(單選題) 17、下面有關java基本類型的默認值和取值范圍,說法錯誤的是?
A 字節型的類型默認值是0,取值范圍是-2^7—2^7-1
B boolean類型默認值是false,取值范圍是true\false
C 字符型類型默認是0,取值范圍是-2^15 —2^15-1
D long類型默認是0,取值范圍是-2^63—2^63-1
正確答案是:C
解析:
java中,char占16bit、byte占8bit、short占16bit、int占32bit、long占64bit、float占32bit、double占64bit。
只有char是無符號類型的。
字符型類型占用的是16位,2字節,但是字符型類型是無符號類型的,所以其取值范圍是0 ~ 2^16-1 而不是 -2^15 ~ 2^15-1。
(單選題) 18、What will happen when you attempt to compile and run the 
following code?
public class Test{
    static{
        int x=5;
    }
    static int x,y;
    public static void main(String args[]){
        x--;
        myMethod( );
        System.out.println(x+y+ ++x);
    }
    public static void myMethod( ){
        y=x++ + ++x;
    }
}
A compiletime error
B prints:1
C prints:2
D prints:3
E prints:7
F prints:8
正確答案是:D
解析:
1.靜態語句塊中x為局部變量,不影響靜態變量x的值
2.x和y為靜態變量,默認初始值為0,屬於當前類,其值得改變會影響整個類運行。
3.java中自增操作非原子性的 
main方法中:執行x--后 x=-1 調用myMethod方法,x執行x++結果為-1(后++),但x=0,++x結果1,x=1 ,則y=0
x+y+ ++x,先執行x+y,結果為1,執行++x結果為2,得到最終結果為3
(不定項選擇題) 19、java中下面哪些是Object類的方法()
A notify()
B notifyAll()
C sleep
D wait()
正確答案是:ABD
解析:在根類Object中包含以下方法:  
clone();
equals();
finalize();
getClass();[align=left][/align]
notify(),notifyAll();
hashCode();
toString();
wait();
 (單選題) 20、Please write the output result 。
public class Test{
     public static void changeStr(String str){
         str= "welcome";
     }
     public static void main(String[] args){
         Stringstr = "1234";
         changeStr(str);
         System.out.println(str);
     }
}
A 1234
B welcome
C 空
D 不確定
正確答案是:A
解析:
此處應該考察Java方法參數傳遞特性。Java方法調用中,只存在值傳遞調用。
此處,實參str是引用變量,由於java方法調用是值傳遞,所以形參str得到的是實參str的一個拷貝。此時形參str和實參str均指向字符串"1234"。
然后,在changeStr方法中,形參str指向了一個新的字符串"welcom",而后方法結束,形參str被銷毀。而實參str仍然指向字符串"1234"。
(單選題) 21、關於以下程序代碼的說明正確的是()
public class HasStatic {// 1
    private static intx = 100;// 2
    public static void main(String args[]) {// 3
        HasStatich sl = newHasStatic();// 4
        hsl.x++;//5
        HasStatich s2 = newHasStatic();// 6
        hs2.x++;//7
        hsl= newHasStatic();// 8
        hsl.x++;//9
        HasStatic.x--;//10
        System.out.println("x="+ x);// 11
    }
}
A 程序通過編譯,輸出結果為:x=102
B 程序通過編譯,輸出結果為:x=103
C 10行不能通過編譯.因為x星私有靜態變量
D 5行不能通過編譯.因為引用了私有靜態變量
正確答案是:A
解析:首先要明確,靜態(static)是在程序加載的時候就一起寫入內存,相當於是一直跟隨着它自己這個類,這就可以理解為什么可以用 類名.變量名 來直接調用;接着是實例化對象(也就是new出來的對象),實例化是必須new了之后才會存在在該類中,也就是說若不是靜態方法,你就必須先new,是new這個對象有該類的訪問權限,因此new出來的對象名也可以調用靜態產量了;最后這就是因為靜態變量一開始就加載到內存中,因此++和--都是對同一變量值,所以最終通過編譯,值為102
(單選題) 22、HashMap中是用哪些方法來解決哈希沖突的?
A 開放地址法
B 二次哈希法
C 鏈地址法
D 建立一個公共溢出區
正確答案是:AC
解析:
解決哈希沖突常用的兩種方法是:開放定址法和鏈地址法   開放定址法:當沖突發生時,使用某種探查(亦稱探測)技術在散列表中形成一個探查(測)序列。沿此序列逐個單元地查找,直到找到給定 的關鍵字,或者碰到一個開放的地址(即該地址單元為空)為止(若要插入,在探查到開放的地址,則可將待插入的新結點存人該地址單元)。查找時探查到開放的 地址則表明表中無待查的關鍵字,即查找失敗。    鏈地址法:將所有關鍵字為同義詞的結點鏈接在同一個單鏈表中。若選定的散列表長度為m,則可將散列表定義為一個由m個頭指針組成的指針數 組T[0..m-1]。凡是散列地址為i的結點,均插入到以T[i]為頭指針的單鏈表中。T中各分量的初值均應為空指針。
(填空題) 23、若x = 5,y = 10,則x < y和x >= y的邏輯值分別為 (1) 和 (2) 。
正確答案是:(1)true (2)false  

(單選題) 24、有如下一段代碼,請選擇其運行結果()

public class StringDemo{
    private static final String MESSAGE="taobao";
    public static void main(String [] args) {
        String a ="tao"+"bao";
        String b="tao";
        String c="bao";
        System.out.println(a==MESSAGE);
        System.out.println((b+c)==MESSAGE);
    }
}    

A true true
B false false
C true false
D false true
正確答案:C
解析:
本題主要考察的是String聲明變量在jvm中的存儲方法
String a="tao";
String b="bao";
String c="taobao";
a,b,c,都是存在字符串常量池中的
String d="tao" +"bao";也是存在常量池中,d的構造過程是現在常量池中先找是否有“taobao”這個字符長 若有則直接引用改字符串 若沒有則在字符長常量池中構造一個“taobao”
類似 String e="tao"+"ba"+"o"; 現在字符串常量池中查找“taoba” 若有則直接引用 若沒有則構造一個放在該池中,然后在判斷是否有“taobao”過程和前面一樣
至於String f=a+b;實際等效於 String f=new String("taobao");存在在堆內存中 所以不相等

(單選題)25、Java 源程序文件的擴展名為()
A .java
B .class
C .exe
D .jar
正確答案是:A
解析:
.class 編譯后的Java文件
.java是未編譯的程序
.jsp是頁面程序
.xml配置程序
.jar是.calss的集合

(單選題)26、關於私有訪問控制符 private 修飾的成員變量,以下說法正確的是()
A 可以三種類所引用:該類自身、與它在同一包中的其他類,在其他包中的該類的子類
B 可以被兩種類訪問和引用:該類本身、該類的所有子類
C 只能被該類自身所訪問和修改
D 只能被同一個包中的類訪問
正確答案是:C
解析:私有變量只能被該類自身調用,類的對象不能使用
(不定項選擇題)27、A,B,C,D 中哪些是 setvar的重載?
public class methodover{
  publicvoid setVar(int a, int b, float c) {}
}
A private void setVar(int a, float c, int b){}
B protected void setVar(int a, int b, float c){}
C public int setVar(int a, float c, int b){return a;}
D public int setVar(int a, float c){return a;}
正確答案是:ACD
解題要點:
1、重載:
(1)作用范圍:同一個類的內部;
(2)定義:方法名相同,但是參數不同(參數的個數不同,參數的類型不同),參數的變量名不同沒有影響;
(3)特別注意:重載的方法返回類型以及訪問權限以及拋出的異常類型可以相同也可以不同,方法的重載和這些沒有關系。
2、重寫:
(1)作用范圍:繼承關系(子類重寫父類方法);實現關系(類重寫接口定義的方法);
(2)定義:方法名和參數、返回類型必須相同,方法的實現不同;被重寫的方法是非private類型的;
(3)特別注意:重寫的方法訪問權限必須大於或等於被重寫的方法的訪問權限,如果被重寫的方法的訪問權限為protected,則重寫方法的訪問權限可以為protected或者public;重寫方法一定不能拋出新的檢查異常或者比被重寫方法申明更加寬泛的檢查型異常,可以拋出非檢查異常,如果被重寫的方法拋出IOException,則重寫方法可以拋出RuntimeException或者IOException的子類,不能拋出其他檢查異常,如SQLException.
重載和重寫的區別:
(1)作用范圍不同
重載發生在同一個類內部,重寫發生在不同類之間或者類與接口之間;
(2)目的不同
重載的目的是定義不同的方法,重寫的目的是對同一個方法有不同的實現;
(3)判別標准不同
方法名相同參數不同的為重載;
方法名相同參數相同返回類型相同的為重寫;
(4)注意點不同
重載不許關心返回類型、拋出的異常;
重寫需要注意返回類型、拋出的異常;
(不定項選擇題) 28、在Java中下面Class的聲明哪些是錯誤的?
A public abstract final class Test { abstract void method(); }
B public abstract class Test { abstract final void method(); }
C public abstract class Test { abstract void method() { } }
D public class Test{ final void method() { } }
正確答案是:ABC
解析:

A.被final修飾的類為最終類,不能被繼承,而類前面如果有abstract修飾,則為抽象類,抽象類是需要被繼承才有意義,因此abstract和final矛盾,選項錯誤。
B.被final修飾的方法為最終方法,不能被繼承,而方法前面如果有abstract修飾,則為抽象方法,抽象方法是需要被繼承才有意義,因此abstract和final矛盾,選項錯誤。
C.抽象類中的抽象方法不能有具體的實現,而選項中的 abstract void method() {}中{}代表有具體的實現,因此此處應該為abstract void method();
注意: abstract 不能與private、static、final或native並列修飾同一個方法。

(不定項選擇題) 29、Java7特性中,abstractclass和interface有什么區別。
A 抽象類可以有構造方法,接口中不能有構造方法
B 抽象類中可以有普通成員變量,接口中沒有普通成員變量
C 抽象類中不可以包含靜態方法,接口中可以包含靜態方法
D 一個類可以實現多個接口,但只能繼承一個抽象類。
正確答案是:ABD
解析:
抽象類
特點:
抽象類中可以構造方法
抽象類中可以存在普通屬性,方法,靜態屬性和方法。
抽象類中可以存在抽象方法。
如果一個類中有一個抽象方法,那么當前類一定是抽象類;抽象類中不一定有抽象方法。
抽象類中的抽象方法,需要有子類實現,如果子類不實現,則子類也需要定義為抽象的。
接口
特點:
在接口中只有方法的聲明,沒有方法體。
在接口中只有常量,因為定義的變量,在編譯的時候都會默認加上
public static final
在接口中的方法,永遠都被public來修飾。
接口中沒有構造方法,也不能實例化接口的對象。
接口可以實現多繼承
接口中定義的方法都需要有實現類來實現,如果實現類不能實現接口中的所有方法
則實現類定義為抽象類。

(單選題)30、如果一個接口Cup有個方法use(),有個類SmallCup實現接口Cup,則在類SmallCup中正確的是?  ( )

A void use() { …}

B protected void use() { …}

C public void use() { …}

D 以上語句都可以用在類SmallCup中

正確答案是:C

解析:

接口,比抽象類還要抽象的類。

接口中每一個方法也是隱式抽象的,接口中的方法會被隱式的指定為 public abstract (只能是 public abstract,其他修飾符都會報錯)。

接口中可以含有變量,但是接口中的變量會被隱式的指定為  public static final   變量(並且只能是 public,用 private 修飾會報編譯錯誤。)

接口中的方法是不能在接口中實現的,只能由實現接口的類來實現接口中的方法。

注:

接口是隱式抽象的,當聲明一個接口的時候,不必使用abstract關鍵字。

接口中每一個方法也是隱式抽象的,聲明時同樣不需要abstract關鍵字。

接口中的方法都是公有的。public

(不定項選擇題) 31、int,String,*point,union哪些不是 Java 的數據類型?

A int

B String

C *point

D union

正確答案是:CD

題目是說數據類型,並沒有說基本數據類型,所有包括了引用數據類型,String為字符串類,屬於引用數據類型

(單選題) 32、子類A繼承父類B, A a = new A(); 則父類B構造函數、父類B靜態代碼塊、父類B非靜態代碼塊、子類A構造函數、子類A靜態代碼塊、子類A非靜態代碼塊執行的先后順序是?

A 父類B靜態代碼塊->父類B構造函數->子類A靜態代碼塊->父類B非靜態代碼塊->子類A構造函數->子類A非靜態代碼塊

B 父類B靜態代碼塊->父類B構造函數->父類B非靜態代碼塊->子類A靜態代碼塊->子類A構造函數->子類A非靜態代碼塊

C 父類B靜態代碼塊->子類A靜態代碼塊->父類B非靜態代碼塊->父類B構造函數->子類A非靜態代碼塊->子類A構造函數

D 父類B構造函數->父類B靜態代碼塊->父類B非靜態代碼塊->子類A靜態代碼塊->子類A構造函數->子類A非靜態代碼塊

正確答案是:C

解析:

按照先后順序:

1,靜態先於非靜態代碼庫執行(靜態代碼塊隨着類的加載而加載,初始化只執行一次)

2,父類先於子類

3,非靜態代碼塊優於構造函數執行

(單選題) 33、java中,用()關鍵字定義常量?

A final

B #define

C float

D const

正確答案是:A

解析:

Java中final關鍵字表示最終的意思,該關鍵字可以修飾類,方法,成員變量

被final修飾的類不能被繼承

被fianl修飾的方法不能被重寫(但可以重載)

被fianl修飾的成員變量是常量

const是C和C++中的常量關鍵字

(單選題)34、A是抽象父類或接口, B , C 派生自 A ,或實現 A ,現在 Java 源代碼中有如下聲明:

1. A a0=new  A();

2. A  a1=new  B();

3. A a2=new  C();

問以下哪個說法是正確的?()

A 只有第1行不能通過編譯

B 第1、2行能通過編譯,但第3行編譯出錯

C 第1、2、3行能通過編譯,但第2、3行運行時出錯

D 第1行、第2行和第3行的聲明都是正確的

正確答案是:A

(單選題) 35、欲定義類字段或類方法(靜態方法),應該使用下列哪一個修飾符修飾()
A public
B static
C protected
D synchronized
正確答案是:B
解析:
public 共有的,以 public 修飾符指定,對所有類可見 static 用來聲明獨立於對象的靜態方法
protected 受保護的,以 protected 修飾符指定,對同一包內的類和所有子類可見
synchronized 給對象和方法或者代碼塊加鎖
(單選題) 36、類 ABC 定義如下:
1 . public class ABC{
2 .   public double max( double a, double b) { }
3 .
4 . }
將以下哪個方法插入行 3 是不合法的。()
A public float max(floata, float b, float c){ }
B public double max(double c, double d){ }
C public float max(floata, float b){ }
D private int max(int a,int b, int c){ }
正確答案是:B
解析:重載要求方法的參數列表需要不一樣(個數,或者參數類型),修改參數名或者修改返回值以及訪問權限並沒有用
(單選題)37、關於抽象類和接口敘述正確的是? ( )
A 抽象類和接口都能實例化的
B 抽象類不能實現接口
C 抽象類方法的訪問權限默認都是public
D 接口方法的訪問權限默認都是public
正確答案是:D
解析:
1.抽象類 不能被實例化 ( 因為不具體,實例化沒作用 ), 注意 接口不是類, 不能實例化[ new] ,只能 new 它的 實現類
2.抽象類可以實現接口
3.抽象類是用abstract修飾的
4. 接口 默認訪問權限為 public,而且只能使用 public
(單選題) 38、關於異常處理機制的敘述正確的是()
A catch部分捕捉到異常情況時,才會執行finally部分
B 當try區段的程序發生異常時,才會執行finally部分
C 當try區段不論程序是否發生錯誤及捕捉到異常情況,都會執行finally部分
D 以上都是
正確答案是:C
解析:
在Java語言的異常處理中,finally塊的作用就是為了保證無論出現什么情況,finally塊里的代碼一定會執行。
由於程序執行return就意味着結束了對當前函數的調用並跳出這個函數體,因此任何語句執行都要放在return前執行(除非碰到exit函數),因此finally塊里面的函數也是在return前執行的。
如果try-finally或者catch-finally中都有return語句,那么finally中的return語句會覆蓋別處的,最終返回到調用者那里的是finally中的return值。
(單選題) 5、以下代碼返回值是什么?

publicboolean returnTest(){
    try{
        return true;
    }catch (Exception e){

    }finally{
        return false;
    }
}

A true
B false
正確答案是:B
解析:
無論有沒有拋出異常,finally語句都會執行,先執行try,return true;然后執行finally,return false,最后結果是false。
(不定項選擇題) 39、下列描述錯誤的是?
A 類只能繼承一個父類,但是可以實現多個接口
B 抽象類自身可以定義成員而接口不可以
C 抽象類和接口都不能被實例化(忽略匿名內部類)
D 一個類可以有多個基類和多個基接口
正確答案:B
解析:
A、D:Java只允許為類的擴展做單一繼承,但是允許使用接口做多重擴展
B:接口允許定義成員,但必須是常量(public final static)
C:抽象類和接口都不能使用new操作
(單選題) 40、以下聲明合法的是
A default String s
B public finalstatic native int w( )
C abstract double d
D abstract finaldouble hyperbolicCosine( )
正確答案是:B
解析:
A:變量不能被defalut修飾
B:native修飾方法,native修飾的方法簡單來說就是:一個Java方法調用了一個非Java代碼的接口。
定義navtive方法時,並不提供實現體,因為其實現體是用非Java語言在外面實現的。native可以和任何修飾符連用,abstract除外。因為native暗示這個方法時有實現體的,而abstract卻顯式指明了這個方法沒有實現體。
C:abstract修飾方法和類
D:final修飾的方法不能被重寫。而abstract定義的方法沒有實現,必須被子類重寫,明顯不能一起使用。

(單選題)41、下面這三條語句
System.out.println(“is ”+ 100 + 5);
System.out.println(100 + 5 +“ is”);
System.out.println(“is ”+ (100 + 5));
的輸出結果分別是? ( )
A is 1005, 1005 is, is 1005
B is 105, 105 is, is 105
C is 1005, 1005 is, is 105
D is 1005, 105 is, is 105
正確答案是:D
解析:
1."is"說明后面的內容都會被強制轉換為string,所以是最后結果是拼接起來的
2.100+5先得到105,然后與is拼接
3.先算括號內的
(單選題)42、下面程序段執行后b的值是()。
Integer integ =new Integer(9) ;
boolean b = integ instanceof Object;
A 9
B true
C 1
D false
正確答案是:B
解析:instanceof 用來在運行時指出對象是否是特定類的一個實例,instanceof通過返回一個布爾值來指出,這個對象是否是這個特定類或者是它的子類的一個實例 Object是任何類的父類,所以應該返回true。
(單選題)43、不考慮反射,String類型變量所指向內存空間中的內容是不能被改變的 。 ( )
A 正確
B 錯誤
正確答案是:B
解析:指向的內容不可改變,但是指向哪個內容是可以變的,為String賦新的值可以理解為其實就是指向新的內容,原內容就舍棄了
(單選題)44、 String str1 = “abc”,“abc”分配在內存哪個區域?
A 堆
B 棧
C 字符串常量區
D 寄存器
正確答案是:C
解析:
棧:存放基本類型的數據和對象的引用,但對象本身不存放在棧中,而是存放在堆中
堆:存放用new產生的數據
靜態域:存放在對象中用static定義的靜態成員
常量池:存放常量
非RAM存儲:硬盤等永久存儲空間
(不定項選擇題)45、在JAVA中,下列哪些是Object類的方法()
A synchronized()
B wait()
C notify()
D notifyAll()
E sleep()
正確答案是:BCD
解析:
A.Synchronized是一個關鍵字不是方法
E.sleep()是Thread的方法。
Object中包含以下方法:
clone();
equals();
finalize();
getClass();
notify(),notifyAll();
hashCode();
toString();
wait();
(不定項選擇題) 46、java8中,忽略內部接口的情況,不能用來修飾interface里的方法的有( )
A private
B public
C protected
D static
正確答案是:ACD
解析:接口只能由public和默認來修飾

(單選題)47、有一個源代碼,只包含importjava.util.* ; 這一個import語句,下面敘述正確的是? ( )
A 只能寫在源代碼的第一句
B 可以訪問java/util目錄下及其子目錄下的所有類
C 能訪問java/util目錄下的所有類,不能訪問java/util子目錄下的所有類
D 編譯錯誤
正確答案是:C
解析
導入java.util.*不能讀取其子目錄的類,因為如果java.util里面有個a類,java.util.regex里面也有個a類,我們若是要調用a類的方法或屬性時,應該使用哪個a類呢。所以也應該選C
(單選題) 48、多個線程可同時操作一個數據,為了保證該數據的准確性,可將操作該數據的部分改為 ()
A 同步
B 異步
C 只讀
D 只寫
正確答案是:A
解析:
多個線程可同時操作一個數據,為了保證該數據的准確性,可將操作該數據的部分改為同步。
同步方法和同步代碼塊的區別是什么?
同步方法 ( 粗粒度鎖 ):
1. 修飾一般方法 : public synchronized void method (){...}, 獲取的是當前調用 對象 this 上的鎖
2. 修飾靜態方法 : public static synchronized void method (){...}, 獲取當前類的 字節碼對象上的鎖
同步代碼塊 ( 細粒度鎖 ):
synchronized ( obj ) {...}, 同步代碼塊可以指定獲取哪個對象上的鎖 , obj 任意
(單選題)49、A派生出子類B,B派生出子類C,並且在java源代碼中有如下聲明:
A a0=new A();
A a1=newB();
A a2=newC();
以下哪個說法是正確的?
A 第1行,第2行和第3行的聲明都是正確的
B 第1,2,3行都能通過編譯,但第2,3行運行時出錯
C 第1,2行能通過編譯,但第3行編譯出錯
D 只有第1行能通過編譯
正確答案是:A
解析:
多態的三種表現形式:繼承重寫,重載,向上轉型。A a=new B()屬於向上轉型,該語句創建了一個B的對象,並將A的對象變量(引用)指向B的對象,即父類引用指向子類對象,是可以的
(單選題)50、選項中哪一行代碼可以替換 //add code here 而不產生編譯錯誤
public abstract class MyClass {
  public intconstInt = 5;
  //add codehere
  public voidmethod() {
  }
}
A public abstractvoid method(int a);
B consInt=constInt+5;
C public intmethod();
D public abstractvoid anotherMethod(){}
正確答案是:A
解析:
B.類中不能直接進行運算,可以寫在代碼塊和靜態代碼塊中
C.和method()重復了
D.abstract不能有{}
(單選題) 51、在基本JAVA類型中,如果不明確指定,整數型的默認是什么類型?帶小數的默認是什么類型?
A int float
B int double
C long float
D long double
正確答案是:B
解析:
Java中,如果對整數不指定類型,默認時int類型,對小數不指定類型,默認是double類型
如果要指定長整型,最好寫為long a = 100000000L,如果要指定為單精度最好寫為float a= 12.34F
(單選題) 52、Whichlines of the following will produce an error?
1. byte a1 = 2,a2 = 4, a3;
2. short s = 16;
3. a2 = s;
4. a3 = a1 * a2;
A Line 3 and Line4
B Line 1 only
C Line 3 only
D Line 4 only
正確答案是:A
解析:
1、 Java中整數默認 類型為int型,浮點默認為double型;
2、對於byte型運算時,會自動轉化為int 型;
3、對於byte\short\char同級別運算時,需要強制轉換;
4、高級型向低級需要強制類型轉換;
高級向低級必須強制類型轉換byte<char<short<int<long<float<double
short,byte,char是同級別的,所有邏輯操作都會自動轉換成int型再進行相關運算

(單選題)53、有以下程序片段,下列哪個選項不能插入到行 1 。()。
1.
2.public class A{
3.//do sth
4. }
A public classMainClass{ }
B package mine;
C classANotherClass{ }
D importjava.util.*;
正確答案是:A
解析:
Java一個源程序只能有一個public類存在,且類名與文件名相同。Java程序是從main方法開始執行的,public為類加載器提供入口,然后找到public類中的main方法開始執行。如果存在多個public類,程序將不知道該從哪里執行。
注意,內部類可以是public的,因為內部類是作為外部類的成員存在的。
(單選題)54、設有定義 int a=3 ,b=4,c=5; 則以下的表達式中 , 值為 false 的是 ()
A a < b&& b < c
B a <= b
C a < ( b + c )
D ! ( a < b )
正確答案是:D
解析:
a < b && b < c true && true true
a <= b true
a < ( b + c ) true
! ( a < b ) !true false
D項。考查運算符的規則 及優先級。()優先級高於!,所以先算括號,括號的結果為true,取反為false
(單選題)55、Given the following code:

public class Test {
    private static int j = 0;

    private static Boolean methodB(intk) {
        j += k;
        returntrue;
    }

    public static void methodA(inti) {
        booleanb;
        b = i < 10| methodB(4);
        b = i < 10|| methodB(8);

    }

    public static void main(String args[]){
        methodA(0);
        System.out.println(j);
    }
}

What isthe result?
A The programprints”0”
B The programprints”4”
C The programprints”8”
D The programprints”12”
E The code doesnot complete.
正確答案是:B
解析:

考察按位或 ‘|’和邏輯或“||”的區別和靜態變量。
|:參與運算 的兩個值無論什么情況都要進行運算
||:先判斷左邊,如果為true則右邊不參與運算,如果為false則右邊要參與運算。

(單選題) 56、下列命令中,用來運行 Java 程序的是()
A java
B javadoc
C jar
D javac
正確答案是:A
解析:

A.java用來運行一個.class文件
B.javadoc用來生成api文檔
C.jar用來生成jar包
D.javac用來把.java文件編譯為.class文件

(不定項選擇題)57、 Considerthe following code:
String s=null;
Which code fragments cause an object of type NullPointerException to be thrown?
A if((s!=null)&(s.length()>0))
B if((s!=null)&&(s.length()>0))
C if((s==null)|(s.length()==0))
D if((s==null)||(s.length()==0))
正確答案是:AC
解析:

String為引用類型,如果對象為null,也就是說這個對象都不存在了,再去調用對象的相關方法,肯定會報空指針異常。這里調用了String類的length()方法
&&和||具有短路的效果,在進行&&時,如果&&前的是false,那么&&后的不再執行,直接返回false,同理||也一樣。所以BD的s.length()不會被執行,AC會拋出空指針異常.

(不定項選擇題) 58、實現或繼承了Collection接口的是()
A Map
B List
C Vector
D Iterator
E Set
正確答案是:BCE
解析:

在java.util包中提供了一些集合類,常用的有List、Set和Map類,其中List類和Set類繼承了Collection接口。這些集合類又稱為容器,長度是可變的,數組用來存放基本數據類型的數據,集合用來存放類對象的引用。
List接口、Set接口、Map接口以及Collection接口的主要特征如下:
Collection接口是List接口和Set接口的父接口,通常情況下不被直接使用。
List接口繼承了Collection接口,List接口允許存放重復的對象,排序方式為按照對象的插入順序。
Set接口繼承了Collection接口,Set接口不允許存放重復的對象,排序方式為按照自身內部的排序規則。
Map接口以鍵值對(key—value)的形式存放對象,其中鍵(key)對象不可以重復,值(value)對象可以重復,排序方式為按照自身內部的規則。
C:Vector實現了List接口,即間接實現Collection接口
D:Iterator是Java迭代器最簡單的實現,沒有實現Collection接口

(單選題)59、設三個整型變量 x = 1 , y = 2 , z = 3,則表達式 y+=z--/++x 的值是( )。
A 3
B 3.5
C 4
D 5
正確答案是:A
解析:

y是2,返回的結果是2+(z--/++x),再來看z--/++x,結果應該是3/2,但是因為x,y,z都是int型的,所以最后的返回值只能是int,這時候z--/++x的值就是1,那么最終的結果就是2+1=3

(單選題)60、編譯Java Application 源程序文件將產生相應的字節碼文件,這些字節碼文件的擴展名為( )。
A java
B class
C html
D exe
正確答案是: B
解析:

Java源程序的后綴名為“.java”
經過編譯之后生成的字節碼文件后綴名為“.class”

(單選題)61、下列關於修飾符混用的說法,錯誤的是( )
A abstract不能與final並列修飾同一個類
B abstract類中不應該有private的成員
C abstract方法必須在abstract類或接口中
D staic方法中能處理非static的屬性
正確答案是:B
解析:
B選項我做的時候沒看清,還以為寫的是不能有,確實不應該有,不管是成員變量,還是非抽象方法都不建議用private修飾,抽象方法是禁止使用private修飾。原因就是我們創建抽象類的目的就是要實現代碼復用,方便子類繼承,private修飾的是不能繼承的,同時抽象類不能實例化對象,所以用private修飾的成員毫無用處。
抽象類的中抽象方法只允許用public和默認修飾(JDK1.8之前默認是用protected修飾,但在JDK1.8之后則是默認為default修飾)
(單選題)62、關於下面的程序Test.java說法正確的是( )。

public class Test {
    static String x="1";
    static int y=1;
    public static void main(String args[]) {
        static int z=2;
        System.out.println(x+y+z);
    }
}

A 3
B 112
C 13
D 程序有編譯錯誤
正確答案是:D
解析:局部變量不能用static修飾
(不定項選擇題)63、下面哪幾個函數 public void example(){....} 的重載函數?()
A public void example(int m){...}
B public int example(){..}
C public void example2(){..}
D public int example(int m,float f){...}
正確答案是:AD
解析:
java重載的時候以參數個數和參數類型作為區分,方法名相同,返回類型可以相同也可以不同,但不以返回類型作為區分,所以b也是錯的,因為b的參數列表和原來的一樣,
(不定項選擇題)64、以下為 java 語法保留不能作為類名和方法名使用的是
A default
B int
C implements
D throws
正確答案是:ABCD
解析:
implements是java實現接口的關鍵字,default是保留字,int是整型數據類型的關鍵字,throws是拋出異常的關鍵字,所以正確答案是ABCD

(單選題)65、main 方法是 Java Application 程序執行的入口點,以下描述哪項是合法的()。
A public static void main()
B public static void main( String args[] )
C public static int main(String [] arg )
D public void main(String arg[] )
正確答案是:B
解析:統一格式就是B public static void main( String args[] )
(單選題)66、下列關於包(package)的描述,正確的是()
A 包(package)是Java中描述操作系統對多個源代碼文件組織的一種方式。
B import語句將所對應的Java源文件拷貝到此處執行。
C 包(package)是Eclipse組織Java項目特有的一種方式。
D 定義在同一個包(package)內的類可以不經過import而直接相互使用。
正確答案是:D
解析:
1、為了更好地組織類,Java提供了包機制。包是類的容器,用於分隔類名空間。如果沒有指定包名,所有的示例都屬於一個默認的無名包。Java中的包一般均包含相關的類,java是跨平台的,所以java中的包和操作系統沒有任何關系,java的包是用來組織文件的一種虛擬文件系統。A錯
2、import語句並沒有將對應的java源文件拷貝到此處僅僅是引入,告訴編譯器有使用外部文件,編譯的時候要去讀取這個外部文件。B錯
3、Java提供的包機制與IDE沒有關系。C錯
4、定義在同一個包(package)內的類可以不經過import而直接相互使用。
(單選題)67、在Java中,main()方法的返回值的類型是:
A public
B static
C void
D String
正確答案是:C
解析:
main方法的格式講解:
public static void main(String[] args) {...}
public:公共的,訪問權限是最大的。由於main方法是被jvm調用,所以權限要夠大。
static:靜態的,不需要創建對象,通過類名就可以。方便jvm的調用。
void:方法的返回值是返回給調用者,而main方法是被jvm調用。你返回內容給jvm沒有意義。
main:是一個常見的方法入口。我見過的語言都是以main作為入口。
String[] args:這是一個字符串數組。這個東西早期是為了接收鍵盤錄入的數據的。
(單選題)68、以下敘述正確的是
A 實例方法可直接調用超類的實例方法
B 實例方法可直接調用超類的類方法、
C 實例方法可直接調用子類的實例方法
D 實例方法可直接調用本類的實例方法
正確答案是:D
解析:
A.父類叫super class所以也叫超類,實例方法就是構造方法,本選項錯在子類不能調用父類的private實例方法。
B.private的類方法子類不能調用
C.父類看不見子類
(單選題) 69、下列哪個修飾符可以使在一個類中定義的成員變量只能被同一包中的類訪問?
A private
B 無修飾符
C public
D protected
正確答案是:B
解析:
1、public:任何地方均可訪問;
2、private:只限類的內部訪問;
3、protected:受保護的,類的內部可訪問;同一個包下的不管是否有繼承關系均可訪問;不同包下只有有繼承關系的才可訪問;
4、默認(default):類的內部可訪問;同一個包下不管是否有繼承關系均可訪問;不同包下不管有沒有繼承關系都不能訪問。

 (單選題) 70、與InputStream流相對應的Java系統的“標准輸入對象”是()
System.in 

B System.out
C System.err
D System.exit()
正確答案:A
解析:
A.標准輸入 B.標准輸出 C.錯誤輸出 D.結束程序
(單選題) 71、一個類中,有兩個方法名、形參類型、順序和個數都完全一樣,返回值不一樣的方法,這種現象叫覆蓋。(  )
A 正確
B 錯誤
正確答案是:B
解析:
重載(overload)和重寫(override)的區別: 重載就是同一個類中,有多個方法名相同,但參數列表不同(包括參數個數和參數類型),與返回值無關,與權限修飾符也無關。調用重載的方法時通過傳遞給它們不同的參數個數和參數類型來決定具體使用哪個方法,這叫多態。 重寫就是子類重寫基類的方法,方法名,參數列表和返回值都必須相同,否則就不是重寫而是重載。權限修飾符不能小於被重寫方法的修飾符。重寫方法不能拋出新的異常或者是比被重寫方法聲明更加寬泛的檢查型異常。
(單選題) 72、定義類中成員變量時不可能用到的修飾是()
A final
B vold
C protected
D static
正確答案是:B
解析:
類中的成員變量和成員方法可用的修飾符有:public、protected、private和default。
(單選題) 73、下列關於構造函數的描述中,錯誤的是()
A 構造函數可以設置默認的參數
B 構造函數在定義類對象時自動執行
C 構造函數可以是內聯函數
D 構造函數不可以重載
正確答案是:B
解析:
構造函數可以重載(不可以重寫),默認構造函數為空,可以通過重載構造函數對成員變量賦初始值
(單選題) 74、如下代碼的 輸出結果是什么?
public class Test {
    public int aMethod() {
        static int i = 0;
        i++;
        return i;
    }
    public static void main (String args[]) {
        Test test = new Test();
        test.aMethod();
        int j = test.aMethod();
        System.out.println(j);
    }
}
A 0
B 1
C 2
D 編譯失敗
正確答案:D
解析:
錯誤在static int i = 0;這句,static不能用於局部變量,局部變量是有相對短的生命周期,而static變量的生命周期和整個程序一樣,不方便內存回收。Java中不允許定義靜態局部變量。
(不定項選擇題) 75、下列哪個選項是合法的標識符?()
A 123
B _name
C class
D first
正確答案是:BD
解析:
Java標識符由 數字、字母、下划線(_)、美元符號($) 組成, 首位不能是數字 。並且 Java關鍵字不能作為標識符 

(單選題)76、protected訪問權限要小於包訪問權限。( )
A 正確
B 錯誤
正確答案是:B
解析:public>protected>(同包)default>private
(單選題) 77、判斷對錯。List,Set,Map都繼承自繼承Collection接口。
A 對
B 錯
正確答案是:B
解析:List,Set等集合對象都繼承自Collection接口
Map是一個頂層結果,不繼承自Collection接口
(單選題)78已知 boolean result ,則下面哪個選項是合法的:
A result=1
B result=true;
C if(result!=0) {//so something…}
D if(result) {//do something…}
正確答案是:B
解析:
A. 和C/C++ 不同,取值只有true,false
B.正確
C.需要和布爾值比較,不能和int型比較,C/C++可以。
D.局部變量未初始化錯誤
(單選題)79、Given:

public class IfTest{
    public static void main(string[]args){
        int x=3;
        int y=1;
        if(x=y)
            System.out.println(“Not equal”);
        else
            System.out.println(“Equal”);
    }
}

What is the result?
A The output is “Equal”
B The output in “Not Equal”
C An error at line 5 causes compilation to fall.
D The program executes but does not print a message.
正確答案是:C
if()語句括號中為比較表達式,返回值要么是true,要么是false,if(x=y)是將y賦值給x,但是數據類型是int類型的,編譯不能通過,如果把代碼改為這樣:
boolean x =false;
boolean y =ture;
if(x=y){...}這樣就就不會報錯了,編譯正常通過。
(單選題)80、()是方法定義和常量值的集合。
A 接口
B 變量
C 單元
D 成員
正確答案是:A
解析:接口中的所以方法都是抽象的-方法定義
接口中的值都是public static final的-常量值
(不定項選擇題) 81、java中HashTable, Vector, TreeSet, LinkedList哪些線程是安全的?
A HashTable
B Vector
C TreeSet
D LinkedList
正確答案是:AB
解析:
LinkedList 和 ArrayList 都是不同步的,線程不安全;
Vector 和 Stack 都是同步的,線程安全;
Set是線程不安全的;
Hashtable的方法是同步的,線程安全;
HashMap的方法不是同步的,線程不安全;

 (單選題) 82、一個文件中的字符要寫到另一個文件中,首先需要()。
A 使用標准輸出流System.out.println()。
B 建立文件字符輸出流。
C 建立文件字符輸入流。
D 標准輸入流 System.in.read()。
正確答案是:B
解析:input 和out 是對計算機而言的,input是往計算機中輸入,對計算機而言就是讀,反之,out 就是從計算機往外輸出就是寫
讀進來,寫出去
(單選題) 83、以下哪個方法用於定義線程的執行體? ()
A start()
B join()
C run()
D synchronized()
正確答案是:C
解析:run()方法是用來定義這個線程在啟動的時候需要做什么,但是,直接執行run()方法那就不是線程,必須使用start()啟動,那樣才是線程。
(單選題) 84、下列方法定義中 , 正確 的是()
A int x( ){ char ch=’a’; return (int)ch; }
B void x( ){ ...return true; }
C int x( ){ ...return true; }
D int x( int a, b){ return a+b; }
正確答案是:A
解析:
A.Java中涉及到byte、short和char類型都可以強制轉化為int,符合返回類型 A正確
B.方法中定義為void 應該沒有返回值,但返回值為boolean類型 B錯
C. 方法中類型為int,應該返回int類型值,但是 返回值為boolean類型 C錯 
D.方法應該定義為int(int a,int b),所以D錯
(單選題) 85、在JAVA中,假設A有構造方法A(int a),則在類A的其他構造方法中調用該構造方法和語句格式應該為()
A this.A(x)
B this(x)
C super(x)
D A(x)
正確答案是:B。
解析:
this的作用其中一個就是在一個構造方法中調用另一個構造方法,格式為this(參數);
構造方法直接this(),非構造方法則用this.()
super是調用父類的方法;
A(a)這種形式是在new一個類時使用。
(不定項選擇題) 86、在程序代碼中寫的注釋太多,會使編譯后的程序尺寸變大。
A 對
B 錯
正確答案是:B
解析:注釋是給人看的,不是給機器看的

(單選題) 87、下列哪一種敘述是正確的()
A abstract修飾符可修飾字段、方法和類
B 抽象方法的body部分必須用一對大括號{ }包住
C 聲明抽象方法,大括號可有可無
D 聲明抽象方法不可寫出大括號
正確答案是D
解析:abstract可以修飾方法和類,不能修飾屬性。抽象方法沒有方法體,即沒有大括號{}
(單選題)88、下列哪種說法是正確的?
A 實例方法可直接調用超類的實例方法
B 實例方法可直接調用超類的類方法
C 實例方法可直接調用本類的類方法
D 實例方法可直接調用其他類的實例方法
正確答案是:C
Java中實例方法可直接調用本類的類方法。
實例方法可以調用超類公有實例方法
實例方法可以直接調用超類的公有類方法
實例方法可以通過類名調用其他類的類方法
(單選題)89、在使用 interface 聲明一個接口時,只可以使用()修飾符修飾該接口
A private
B protected
C private protected
D public
正確答案是:D
解析:接口必須被繼承,所以得是public
(單選題)90、如果希望某個變量只可以被類本身訪問和調用,則應該使用下列哪一種訪問控制修飾?
A public
B private
C private protected
D protected
正確答案是:B
解析:
private修飾的僅自己能訪問,protected同包或子類可以訪問,public是不同包也可以訪問。
(單選題)91、以下程序的運行結果是()

public class Increment{
    public static void main(Stringargs[]){
        int a;
        a = 6;
        System.out.print(a);
        System.out.print(a++);
        System.out.print(a);
    }
}

A 666
B 667
C 677
D 676
正確答案是:B
解析:
++在前先加后用 ++在后先用后加
a++為后++操作,System.out.print(a++),a先返回后,在進行自增+1操作,故輸出為6.第三行的打印輸出,在a++操作后a的值變為7
(單選題)92、 關於Float,下列說法錯誤的是()
A Float是一個類
B Float在java.lang包中
C Float a=1.0是正確的賦值方法
D Float a= new Float(1.0)是正確的賦值方法

正確答案是:C
解析:
1. Float是類,float不是類.
2. 查看JDK源碼就可以發現Byte,Character,Short,Integer,Long,Float,Double,Boolean都在java.lang包中.
3. Float正確賦值方式是Float f=1.0f,若不加f會被識別成double型,double無法向float隱式轉換.
4. Float a= new Float(1.0)是正確的賦值方法,但是在1.5及以上版本引入自動裝箱拆箱后,會提示這是不必要的裝箱的警告,通常直接使用Float f=1.0f.

 (單選題) 93、類Car里面有個方法run(),如果直接用Car.run(),則方法run前面必須用的關鍵詞是?  ( )
A class
B final
C public
D static
正確答案是:D
解析:使用static修飾的方法,可以直接用類名點方法名的方式直接調用..
(單選題) 94、在使用 interface 聲明一個接口時,只可以使用()修飾符修飾該接口
A private
B protected
C private protected
D public
正確答案是:D
解析:接口必須被繼承,所以得是public
(單選題) 95、java 語言使用的字符碼集是
A ASCII
B BCD
C DCB
D Unicode
正確答案是:D
解析:Java語言使用的是Unicode字符集,ASCII是國際上使用最廣泛的字符編碼
(不定項選擇題) 96、下面選項中,哪些是interface中合法方法定義?()
A public void main(String [] args);
B private int getSum();
C boolean setFlag(Boolean [] test);
D public float get(int x);
正確答案是:ACD
解析:java程序的入口必須是static類型的,接口中不允許有static類型的方法。A項沒有static修飾符,可以作為普通的方法。而且接口中的方法必須是public的。想想借口就是為了讓別人實現的,相當於標准,標准不允許別人使用是不合理的,所以接口中的方法必須是public。C項中,接口中的方法默認是public的。D項屬於正常的方法。所以答案是:ACD
(單選題) 97、Java 程序中使用賦值運算符進行對象賦值時,可以得到兩個完全相同的對象。
A 正確
B 錯誤
正確答案是:A
解析:對象賦值時,比如A=B,只是把A對象的地址指向了B對象的地址,所以其實對象只有一個
(不定項選擇題) 98、不能用來修飾interface的有()1/1
A private
B public
C protected
D static
正確答案是::ACD
解析:
A,C,D都不能用來修飾interface。
就訪問來說,可以用public,默認修飾符,而不能用private,因為接口本身就是為了讓別的類或接口使用的,用private就沒有了意義。
protected也是不可以的,ptotected的訪問權限是包內對象以及包外繼承該類的包外對象,其實和public意義也就一樣了,也就沒必要選擇protected。
static是用來修飾變量或者方法的,而不修飾類。(在接口中 static只能修飾變量不能修飾方法)
(final同樣不能修飾接口)
 (單選題) 99、在視圖上不能完成的操作是()?
A 更新視圖
B 查詢
C 在視圖上定義新的表
D 在視圖上定義新的視圖
正確答案是:C
解析:
視圖是基於數據表的一種查詢窗口。怎么可能在這種查詢窗口中再建數據表呢?
就像你可以在房子上開窗,但你不能在窗子上蓋個房子吧?
(單選題) 100、按照傳統的數據模型分類,數據庫系統可以分為三種類型()。
A 大型、中型和小型
B 西文、中文和兼容
C 層次、網狀和關系
D 數據、圖形和多媒體
正確答案是:C
(單選題) 101、在SQL語言的SELECT語句中,實現排序操作的是哪個子句()。
A WHERE
B FROM
C SELECT
D ORDER BY
正確答案是:D
解析:
WHERE:條件判斷
 FROM:來自哪一張表
SELECT:查詢
(單選題) 102、DBMS 提供 DML 實現對數據的操作。可以獨立交互 使用的 DML 稱為()。
A 宿主型
B 獨立型
C 自含型
D 嵌入型
正確答案是:C
解析:數據操縱子語言通常又分為兩類:一類是嵌入主語言,由於這種語言本身不能獨立使用,故稱為宿主型的語言;另一類是交互式命令語言,由於這種語言本身能獨立使用,故又稱為自主型或自含型的語言。
(單選題) 103、JDBC的主要功能有?1/1
A 創建與數據庫的連接
B 發送SQL語句到數據庫中
C 處理數據並查詢結果
D 以上都是
正確答案是:D
解析:根據JDBC的定義,JDBC是由一系列連接(Connection)、SQL語句(Statement)和結果集(ResultSet)構成的,其主要作用概括起來有如下3個方面:
    建立與數據庫的連接。
    向數據庫發起查詢請求。
    處理數據庫返回結果。
(單選題) 104、表toutiao_tb
title   data       auther type
abc     2016.2.23   bob    1
bcv     2016.3.3    http   1
cvt     2016.3.3    http   1
bcvvcm  2016.3.5    js     2
nmhh    2016.2.3    html   2
hhj     2016.3.3    java   3
rrr     2016.3.2    cc     1
查詢title中包含cv且type是1的記錄
A select * from toutiao_tb where title = 'cv' and type='1'
B select * from toutiao_tb where title like '%cv%' andtype=1
C select * from toutiao_tb where title like '*cv' andtype=1
D select * from toutiao_tb where title ='*cv*' and type='1‘
正確答案是:B
解析:
% 表示任意0個或多個字符
_ 表示任意單個字符
%...%:這是查詢包含...的任意字符串
%...:這是查詢以...結束的任意字符串
...%:這是查詢以...開頭的任意字符串

(單選題)105、在 java 中,一個類可同時定義為許多同名的方法,這些方法的形式參數個數,類型或順序各不相同,傳回的值可能個不相同,這種面向對象的特性稱為()
A 隱藏
B 覆蓋
C 重載
D 無此特性
正確答案是:C
解析:
java中重載的特點就是同一個類中方法名相同,參數不同,這是java中重載的顯著特征。
覆蓋和重寫是一回事,重寫的方法名和參數類型均相同,隱藏是子類中存在與父類同名同參的方法時,父類方法被隱藏
(單選題)106、 下列關於繼承的哪項敘述是正確的?
A 在java中允許多繼承
B 在java中一個類只能實現一個接口
C 在java中一個類不能同時繼承一個類和實現一個接口
D java的單一繼承使代碼更可靠
正確答案是:D
解析:
A:Java只能單繼承。所以A選項錯誤
B:Java中一個類可以實現多個接口,所以B錯誤
C:Java中一個類只能實現繼承一個父類但是可以同時實現多個接口,所以C錯誤
D:Java的單一繼承使代碼更可靠,是正確的。
(單選題) 107、從運行層面上來看,從四個選項選出不同的一個。
A JAVA
B Python
C objectC
D C#
正確答案是:B
解析:python是腳本語言,與其它不同
(不定項選擇題) 108、關於 java 的異常處理機制的敘述哪些正確?
A 不論程序是否發生錯誤及捕捉到異常情況,都會執行finally部分
B 當try區段的程序發生異常時,才會執行catch區段的程序
C catch部分捕捉到異常情況時,才會執行finally部分
D 其它選項都不正確
正確答案是:AB
解析:
A、不論程序是否發生錯誤及捕捉到異常情況,都會執行finally部分。(正確)
B、當try區段的程序發生異常時,才會執行catch區段的程序。(正確)
C、 catch部分捕捉到異常情況時,才會執行finally部分(錯誤,不管有沒有捕捉到異常,都會執行finally)
D、上面有正確的,D錯誤。
(不定項選擇題) 109、在java語言中,如果你編寫一個多線程序,可以使用的方法是()
A 擴展類Thead
B 實現Runnable接口
C 擴展類 Runnable
D 實現接口Thead
正確答案是:AB
解析:
1.繼承Thread類(Override它的run方法)
2.實現Runnable接口(實現run方法)
(不定項選擇題) 110、在Jdk1.7中,下述說法中抽象類與接口的區別正確的有哪些?
A 抽象類中可以有普通成員變量,接口中沒有普通成員變量。
B 抽象類和接口中都可以包含靜態成員常量。
C 一個類可以實現多個接口,但只能繼承一個抽象類
D 抽象類中可以包含非抽象的普通方法,接口中的方法必須是抽象的,不能有非抽象的普通方法。
正確答案是:ABCD
解析:
總結一下
1. 一個子類只能繼承一個抽象類,但能實現多個接口
2. 抽象類可以有構造方法,接口沒有構造方法
3. 抽象類可以有普通成員變量,接口沒有普通成員變量
4. 抽象類和接口都可有靜態成員變量,抽象類中靜態成員變量訪問類型任意,接口只能public static final(默認)
5. 抽象類可以沒有抽象方法,抽象類可以有普通方法,接口中都是抽象方法
6. 抽象類可以有靜態方法,接口不能有靜態方法
7. 抽象類中的方法可以是public、protected;接口方法只有public

 (單選題)  111、如果子類要調用父類的構造函數,則通過super()調用來實現。
A 正確
B 錯誤
正確答案是:A
解析:子類構造函數一定要調用父類構造函數(第一行),不過父類無參的構造函數可以隱式調用,當父類沒有無參構造函數時需要顯式調用
(單選題) 112、ArrayList和LinkList的描述,下面說法錯誤的是?
A LinkedeList和ArrayList都實現了List接口
B ArrayList是可改變大小的數組,而LinkedList是雙向鏈接串列
C LinkedList不支持高效的隨機元素訪問
D 在LinkedList的中間插入或刪除一個元素意味着這個列表中剩余的元素都會被移動;而在ArrayList的中間插入或刪除一個元素的開銷是固定的
正確答案是:D
解析:
這個說法說反了
Arraylist的內存結構是數組,當超出數組大小時創建一個新的數組,吧原數組中元素拷貝過去。其本質是順序存儲的線性表,插入和刪除操作會引發后續元素移動,效率低,但是隨機訪問效率高
LinkedList的內存結構是用雙向鏈表存儲的,鏈式存儲結構插入和刪除效率高,不需要移動。但是隨機訪問效率低,需要從頭開始向后依次訪問
(單選題) 113、假設有以下代碼 
String s=”hello”;
String t=”hello”;
Char c[] ={‘h’,’e’,’l’,’l’,’o’};
下列選項中返回false的語句是:
A s.equals(t);
B t.equals(c);
C s==t;
D t.equals(new String(“hello”));
正確答案是:B
解析:
==是比較地址值是否相等,.equals()方法是比較值是否相等
s和t兩個變量都是指向字符串常量池中的同一個內存區域,所以地址值相等,值當然也相等,AC正確
Char c[]是一個字符數組,和字符串t使用.equals()方法比較,返回false
D選項new了一個新的字符串,它的值和s、t是相同的,但是由於是新new出來的,就會重新開辟一個空間進行存儲,所以地址不同,但是值相同
(單選題) 114、下列Java代碼中的變量a、b、c分別在內存的____存儲區存放。
class A {
        private String a = “aa”;
        public boolean methodB() {
           String b = “bb”;
           final String c = “cc”;
        }
}
A 堆區、堆區、堆區
B 堆區、棧區、堆區
C 堆區、棧區、棧區
D 堆區、堆區、棧區
E 靜態區、棧區、堆區
F 靜態區、棧區、棧區
正確答案是:C
a是類中的成員變量,存放在堆區
b、c都是方法中的局部變量,存放在棧區
(不定項選擇題) 115、下面有關java的instanceof、?、&、&&說法正確的有?
A instanceof 可用來判斷某個實例變量是否屬於某種類的類型。
B "?:"  三目運算符
C &在邏輯運算中是非短路邏輯與,在位運算中是按位與
D && 邏輯運算:邏輯與
正確答案是:ABCD
解析:
instanceof:用來判斷某個實例變量是否屬於某種類的類型,但是實例變量可以放置在前面也可以放置在后面
"?:": 三目運算符
&:  邏輯與(不短路)
&&:邏輯運算:(短路)
 (單選題) 116、下列選項中,用於在定義子類時聲明父類名的關鍵字是:( )
A interface
B package
C extends
D class
正確答案是:C
解析:
A是接口
B是包
D是類
(單選題) 117、Continue語句跳出整個循環
A 正確
B 錯誤
正確答案是:B
解析:
continue時,本次循環結束,直接開始下一次循環;循環體還沒結束
break時是跳出本循環體,循環體結束!
(單選題) 118、java 接口的修飾符可以為()
A private
B protected
C final
D abstract
正確答案是:D
解析:
接口只能用public和abstract修飾
(單選題) 119、下面關於程序編譯說法正確的是()
A java語言是編譯型語言,會把java程序編譯成二進制機器指令直接運行
B java編譯出來的目標文件與具體操作系統有關
C java是解釋型語言,在運行時才進行翻譯指令
D java編譯出來的目標文件,可以運行在任意jvm上
正確答案是:C
解析:
A:字節碼文件
B:與操作系統無關
D:jvm可以有不同實現
(不定項選擇題) 120、不能用來修飾interface的有()
A private
B public
C protected
D static
正確答案是:ACD
解析:接口只能用public和abstract修飾
(不定項選擇題) 121、下面哪幾個函數 public void example(){....} 的重載函數?()
A public void example(int m){...}
B public int example(){..}
C public void example2(){..}
D public int example(int m,float f){...}
正確答案是:AD
解析:
重載的依據是參數列表不同,返回值不能作為重載的依據
重載只要求參數列表不同,返回值無關。
 (單選題)  122、關於下面的程序Test.java說法正確的是(    )。
public class Test {
    static String x="1";
    static int y=1;
    public static void main(String args[]) {
        static int z=2;
        System.out.println(x+y+z);
    }
}
A 3
B 112
C 13
D 程序有編譯錯誤
正確答案是:D
解析:
被static修飾的變量稱為靜態變量,靜態變量屬於整個類,而局部變量屬於方法,只在該方法內有效,所以static不能修飾局部變量
(單選題) 123、在 JAVA 編程中, Java 編譯器會將 Java 程序轉換為( )
A 字節碼
B 可執行代碼
C 機器代碼
D 以上都不對
正確答案是:A
解析:
編譯器將.java原代碼轉換成以.class為后綴名的字節碼文件
(單選題) 124、下列語句序列執行后,輸出結果是()
public class ex{
    public static void main(String[]args){
        int a=13;
        a=a/5;
        System.out.println(a);
    }
}
A 1
B 2
C 3
D 4
正確答案是:B
解析:因為a為int類型  所以13/5取商為2,然后再賦值給a,所有輸出a=2。
(不定項選擇題) 125、給出下面的代碼段:
public class Base{
    int w, x, y ,z;
    public Base(int a,int b){
        x=a; y=b;
    }
    public Base(int a, int b, int c, int d){
    // assignment x=a, y=b
        w=d;z=c;
    }
}
在代碼說明// assignment x=a, y=b處寫入如下哪幾個代碼是正確的?() 
A Base(a,b);
B x=a, y=b;
C x=a; y=b;
D this(a,b);
正確答案是:CD
解析:
A錯,調用Base這個構造方法應該這樣  newBase(a,b)
B錯,和C相比應該是分號不是逗號,帥的一塌糊塗
C正常賦值操作
D調用本類的構造方法
(單選題) 126、下面哪段程序能夠正確的實現了GBK編碼字節流到UTF-8編碼字節流的轉換:
1     byte[] src,dst;
A dst=String.fromBytes(src,"GBK").getBytes("UTF-8")
B dst=new String(src,"GBK").getBytes("UTF-8")
C dst=new String("GBK",src).getBytes()
D dst=String.encode(String.decode(src,"GBK")),"UTF-8" )
正確答案是:B
解析:
操作步驟就是先解碼再編碼
用new String(src,"GBK")解碼得到字符串
用getBytes("UTF-8")得到UTF8編碼字節數組
(單選題) 127、語句:char foo='中',是否正確?(假設源文件以GB2312編碼存儲,並且以javac – encoding GB2312命令編譯)
A 正確
B 錯誤
正確答案是:A
解析:
在Java中,GB2312編碼,中文字符占2個字節,正好Java基本類型中的char 是單一的16位Unicode字符,可以儲存任何字符,不管是數字還是英文還是中文漢字,都占兩個字節。所以char foo='中'正確。
 (單選題)  128、程序文件名必須與公共外部類的名稱完全一致(包括大小寫)
A 正確
B 錯誤
正確答案是:A
解析:統一規范類名必須與文件名一致
(單選題) 129、在 main() 方法中給出的字節數組,如果將其顯示到控制台上,需要()。
A 標准輸出流System.out.println()。
B 建立字節輸出流。
C 建立字節輸入流。
D 標准輸入流 System.in 

.read()。
正確答案是:A
解析:輸出到控制台,直接
System.out.println()
(單選題) 130、裝箱、拆箱操作發生在: ()
A 類與對象之間
B 對象與對象之間
C 引用類型與值類型之間
D 引用類型與引用類型之間
正確答案是
正確答案是:C
解析:
通俗的講,就是基本數據類型和包裝類之間的轉換。如: int  類型和  Integer  類的轉換
基本數據類型轉化成包裝類是裝箱  (如: int  --> Integer)。
包裝類轉化成基本數據類型就是拆箱  (如:Integer -->  int)。
包裝類就是引用類型,基本數據類型就是值類型。所以選C
(單選題) 131、下面的輸出結果是什么?
public class Demo {
  public static void main(String args[])
  {
    String str=new String("hello");
    if(str=="hello")
    {
      System.out.println("true");
    }      
    else     {
      System.out.println("false");
    }
  }
}
A true
B false
正確答案是:
正確答案是:B
解析:==判斷的是對象引用地址是否相同,
 String str=newString("hello");
這句話new了一個新的String對象,所以地址與"hello"字符串常量的地址不同,
注意這兩句話,
1.新建的對象保存在堆內存中,引用變量str保存在棧內存中並指向堆內存中的對象。
2.而“hello”這種直接保存在字符串常量池中。
3。兩個不是同一個地址啊!返回false
(單選題) 132、在基本 JAVA 類型中,如果不明確指定,整數型的默認是 __ 類型,帶小數的默認是 __ 類型? (  )
A int float
B int double
C long float
D long double
正確答案是:B
解析:
整型默認為int,如果需要long,須加l或L。小數默認double,d或D可省略,但如果需要float,須加f或F,例如float = 0.1f
 (單選題) 133、當編譯並運行下面程序時會發生什么結果()
public class Bground extends Thread{
    public static void main(String argv[]){
        Bground b = new Bground();
       b.run();
    }
    public void start(){
        for(int i=0;i<10;i++){
            System.out.println("Value of i= "+i);
        }
    }
}
A 編譯錯誤,指明run方法沒有定義
B 運行錯誤,只鞥呢run方法沒有定義
C 編譯通過並輸出0到9
D 編譯通過,但無輸出
正確答案是:D
解析:主函數中調用的run()方法是繼承自Thread類的,並沒有實現具體函數內容;而且main函數中並沒有調用start()方法,所以整個運行過程中並沒有調用start()方法,所以沒有任何輸出;選D。
(不定項選擇題) 134、根據下面的代碼,
String s = null;
會拋出NullPointerException異常的有()。
A if( (s!=null) & (s.length()>0) )
B if( (s!=null) && (s.length()>0) )
C if( (s==null) | (s.length()==0) )
D if( (s==null) || (s.length()==0) )
正確答案是:AC
解析:
 邏輯運算符:&&和|| 是按照“短路”方式求值的。如果第一個操作數已經能夠確
定表達式的值,第二個操作數就不必計算了
位移運算符:&和| 運算符應用於布爾值,得到的結果也是布爾值,不按“短路”方式計算。即在得到計算結果之前,一定要計算兩個操作數的值。
(單選題) 135、對抽象類的描述正確的是()
A 抽象類的方法都是抽象方法
B 一個類可以繼承多個抽象類
C 抽象類不能有構造方法
D 抽象類不能被實例化
正確答案是:D
解析:包含抽象方法的類必須定義為抽象類;抽象類不一定包含抽象方法,也可以包含普通方法;抽象類有構造方法,但是不能new一個對象所以抽象類不能被實例化;抽象類只支持單繼承。
(單選題) 136、下面所示的java代碼,運行時,會產生()類型的異常
int Arry_a[] =new int[10];
System.out.println(Arry_a[10]);
A ArithmeticException
B NullPointException
C IOException
D ArrayIndexOutOfBoundsException
正確答案是:D
解析:
定義的數組長度為10,下標即為0-9
所以Array_a[10]會提示數組下標越界
 (單選題) 137、下列修飾符中與訪問控制權限無關的是?( )
A private
B public
C protected
D final
正確答案是:D
解析:
private:修飾私有變量
public:修飾公有變量
protected:修飾受保護變量
final:保護私有變量不受改變
(單選題) 138、現有一變量聲明為 boolean aa; 下面賦值語句中正確的是 ( )
A aa=false;
B aa=False;
C aa="true";
D aa=0;
正確答案是:A
解析:
B aa=False;  False應該改成false;
C aa="true";加雙引號相當於是字符串 所以是錯的
boolean類型允許的取值為true或false
(單選題) 139、只有實現了()接口的類,其對象才能序列化。1/1
A Serializable
B Cloneable
C Comparable
D Writeable
正確答案是:A
解析:
強制記憶題:實現Serializable 接口才可以對該類實現序列化和反序列化
(單選題) 140、映射 (Map) 的key和value都不可重復。(    )
A 正確
B 錯誤
正確答案是:B
解析:
Map的key不可以重復,value是可以重復的
(單選題) 141、在 java 中 , 一個類()
A 可以繼承多個類
B 可以實現多個接口
C 在一個程序中只能有一個子類
D 只能實現一個接口
正確答案是:B
解析:
在Java中,一個類可以實現多個接口,只能繼承一個類,可以有多個子類,
(單選題) 142、關於Float,下列說法錯誤的是()
A Float是一個類
B Float在java.lang包中
C Float a=1.0是正確的賦值方法
D Float a= new Float(1.0)是正確的賦值方法
正確答案是:C
解析:
1. Float是類,float不是類.
2. 查看JDK源碼就可以發現Byte,Character,Short,Integer,Long,Float,Double,Boolean都在java.lang包中.
3. Float正確復制方式是Float f=1.0f,若不加f會被識別成double型,double無法向float隱式轉換.
4. Float a= new Float(1.0)是正確的賦值方法,但是在1.5及以上版本引入自動裝箱拆箱后,會提示這是不必要的裝箱的警告,通常直接使用Float f=1.0f.
(不定項選擇題) 143、下面為true的是
Integer i = 42;
Long l = 42l;
Double d = 42.0;
A (i == l)
B (i == d)
C (l == d)
D i.equals(d)
E d.equals(l)
F i.equals(l)
G l.equals(42L)
正確答案是:G
解析:
A B C 3 個選項很明顯,不同類型引用的 == 比較,會出現編譯錯誤,不能比較。
D E F 選項 調用 equals 方法,因為此方法先是比較類型,而 i , d , l 是不同的類型,所以返回假。
選項 G ,會自動裝箱,將 42L 裝箱成 Long 類型,所以調用 equals 方法時,類型相同,且值也相同,因此返回真。
 (單選題) 144、執行下列代碼的輸出結果是( )
public class Demo{
   public static void main(String args[]){
      int num = 10;
      System.out.println(test(num));
    }
    public static int test(intb){
      try{
        b += 10;
         returnb;
     }catch(RuntimeException e){

     }catch(Exception e2){

     }finally{
       b += 10;
        returnb;
     }
    }
}
A 10
B 20
C 30
D 40
正確答案是:C
解析:
如果finally語句塊中沒有return語句,則返回20,因為finally在return語句之前執行,不能通過在return中重新賦值改變返回值。
如果finally中有有return語句,則會覆蓋try語句塊中的返回值,故為30.
(單選題) 145、關於final說法正確的是?  ( )
A final類的方法肯定不能被同一個包的類訪問
B final類的方法能否被同一個包的類訪問不是由final決定
C final方法等同於private方法
D final對象本身的引用和值都不能改變
正確答案是:B
解析:
A:能不能被同一個包的類訪問與final無關,由public protectdefault private 決定
D:引用不能改變、值可以改變
(單選題) 146、局部變量能否和成員變量重名?
A 可以,局部變量可以與成員變量重名,這時可用“this”來指向成員變量
B 可以,這時可用“local”關鍵字來指向局部變量
C 不能,局部變量不能與成員變量重名
D 不能,在一個類中不能有重名變量,不管是成員變量還是函數中的局部變量
正確答案是:A
解析:
java采用局部優先的思想。局部變量可以和成員變量相同,使用標識符調用時,優先使用局部變量。在實例方法中出現變量名相同時,可以使用this關鍵字來調用。
(單選題) 147、java 中哪個關鍵字可以對對象加互斥鎖?
A transient
B synchronized
C serialize
D static
正確答案是:B
解析:
1.static 修飾符,用來創建類方法和類變量。
2.final 修飾符,用來修飾類、方法和變量,final 修飾的類不能夠被繼承,修飾的方法不能被繼承類重新定義,修飾的變量為常量,是不可修改的。
3.abstract 修飾符,用來創建抽象類和抽象方法。
4.synchronized 用於多線程的同步。用來給對象和方法或者代碼塊加鎖,各線程互斥訪問。
5.volatile 修飾的成員變量在每次被線程訪問時,都強制從共享內存中重新讀取該成員變量的值。而且,當成員變量發生變化時,會強制線程將變化值回寫到共享內存。這樣在任何時刻,兩個不同的線程總是看到某個成員變量的同一個值。
6.transient:序列化的對象包含被 transient 修飾的實例變量時,java虛擬機(JVM)跳過該特定的變量。
(單選題) 148、有時為了避免某些未識別的異常拋給更高的上層應用,在某些接口實現中我們通常需要捕獲編譯運行期所有的異常, catch 下述哪個類的實例才能達到目的:()
A Error
B Exception
C RuntimeException
D Throwable
正確答案是:B
解析:
因為error是系統出錯,catch是無法處理的,難以修復的,RuntimeException不需要程序員進行捕獲處理,error和exception都是throwable的子類,我們只需要對exception的實例進行捕獲即可
 (單選題)  149、以下有關構造方法的說法,正確的是:()
A 一個類的構造方法可以有多個
B 構造方法在類定義時被調用
C 構造方法只能由對象中的其他方法調用
D 構造方法可以和類同名,也可以和類名不同
正確答案是:A
解析:
A正確,構造方法可以重載,所以可以有多個;
B錯誤,構造方法在類實例化對象時調用來初始化對象,自動調用;
C錯誤,解析見B
D錯誤,構造方法必須和類相同。
(單選題) 150、如果int x=20, y=5,則語句System.out.println(x+y+""+(x+y)+y);  的輸出結果是()
A 2530
B 55
C 2052055
D 25255
正確答案是:D
解析:主要考的運算符優先級與結合性。
括號里先算,然后再從左到右開始算  剛開始第1個+就是運算符所以20+5=25 ,當遇到“”時轉換為字符串。這時+就是連接符了而不是運算符再與后面+就都字符串了 25 25  5  所以最后答案是25255
(單選題) 151、下面哪個修飾符修飾的變量是所有同一個類生成的對象共享的( )
A public
B private
C static
D final
正確答案是:C
解析:static表示靜態變量,歸類所有,該類的所有對象公用
(單選題) 152、以下關於集合類 ArrayList 、 LinkedList 、 HashMap 描述錯誤的是:
A HashMap實現Map接口,它允許任何類型的鍵和值對象,並允許將null用作鍵或值
B ArrayList和LinkedList均實現了List接口
C 添加和刪除元素時,ArrayList的表現更佳
D ArrayList的訪問速度比LinkedList快
正確答案是:C
解析:
HashMap實現Map接口,它允許任何類型的鍵和值對象,並允許將null用作鍵或值。
ArrayList和LinkedList均實現了List接口。
ArrayList的訪問速度比LinkedList快。添加和刪除元素時,LinkedList的表現更佳。
(不定項選擇題) 153、下面屬於java引用類型的有?
A String
B byte
C char
D Array
正確答案:AD
解析:
java語言是強類型語言,支持的類型分為兩類:基本類型和引用類型。
基本類型包括boolean類型和數值類型,數值類型有整數類型和浮點類型。整數類型包括:byte、short、int、long和;浮點類型包括:float和double
引用類型包括類、接口和數組類型以及特殊的null類型。
 (單選題) 154、若所用變量都已正確定義,以下選項中,非法的表達式是()
A a!= 4||b==1
B ’a’ % 3
C ’a’ = 1/3
D ’A’ + 32
正確答案是:C
解析:'a'是個常數,壓根就不能賦值  =就是錯的
(單選題) 155、覆蓋(重寫)與重載的關系是()。
A 覆蓋(重寫)只有出現在父類與子類之間,而重載可以出現在同一個類中
B 覆蓋(重寫)方法可以有不同的方法名,而重載方法必須是相同的方法名
C final修飾的方法可以被覆蓋(重寫),但不能被重載
D 覆蓋(重寫)與重載是同一回事
正確答案是:A

面試很喜歡問的:
     首先,重載和重寫都是多態的一種體現方式。重載是編譯期間的活動,重寫是運行期間的活動。
     其次,重載是在一個類中定義相同的名字的方法,方法的參數列表或者類型要互相不同,但是返回值類型不作為是否重載的標准,可以修改可見性;
     重寫是不同的,要求子類重寫基類的方法時要與父類方法具有相同的參數類型和返回值,可見性需要大於等於基類的方法
final修飾的方法可以被重載,但不可以被重寫
(單選題) 156、編譯 java 源程序文件將產生響應的字節碼文件,這些字節碼文件的擴展名為
A .class
B .java
C .html
D .exe
正確答案是:A
寫好的java文件后綴名為xxx.java
編譯java文件:輸入javac xxx.java回車,編譯會生成.class文件
運行java文件:java xxx.class;
(單選題) 157、以下程序的運行結果是()
public class Increment{
    public static void main(String args[]){
        int a;
        a = 6;
        System.out.print(a);
        System.out.print(a++);
        System.out.print(a);
    }
}
A 666
B 667
C 677
D 676
正確答案是:B
解析:++在前先加后用 ++在后先用后加
(單選題) 158、執行如下代碼段后,變量s1引用的字符串值是(    )。
Strings1 = "ABCD";
String s2 = "1234";
System.out.println(s1 + s2);
A ABCD
B 1234
C ABCD1234
D 1234ABCD
正確答案是:A
解析:
這道題考的不是知識掌握能力,而是審題!!!!
不要直接看代碼,把題目先讀一遍
(單選題) 159、關於如下程序的描述哪個是正確的?()
public class Person{
    static intarr[] = new int[5];
    public static void main(String a[]){
        System.out.println(arr[0]);
    }
}
A 編譯將產生錯誤
B 編譯時正確,但運行時將產生錯誤
C 正確,輸出0
D 正確,輸出 null
正確答案是:C
解析:
被static修飾的會默認初始化,int就是0咯。
 (單選題)  160、Java中只有整型才能使用的運算符為?
A *
B /
C %
D +
正確答案是:C
解析:ABD選項的操作符都可用於int 但是結果不一定是int
所以只有%取余操作,只適用於整型
(不定項選擇題) 161、Consider the following code:
Integer s=new Integer(9);
Integer t=new Integer(9);
Long u=new Long(9);
Which testwould return true?
A (s==u)
B (s==t)
C (s.equals(t))
D (s.equals(9))
E (s.equals(newInteger(9))
正確答案是:CDE
解析:
(s==u) ,因為, s 是 Integer 類型, u 是 Long 類型,兩個不同類型的引用不能進行 == 比較。  
(s==t) , s 是指向一個 9 的引用,而 t 也是一個指向 9 的引用,雖然都是指向 9 ,但卻是指向不同的 9 ,即是兩個不同的引用。因此 == 比較返回的是假。 
(s.equals(t)) , Integer 的 equals 方法如下:    
 public boolean equals(Object obj) {  
      if (obj instanceof Integer) {           
 return value ==((Integer)obj).intValue();       
  }       
  return false ;
 } 
是 Integer 的實例且 value 值也相等的情況下返回真,其他返回假。在這里, s 和 t 都是 Integer 類型且值都為 9 ,因此結果為真。  
(s.equals(9)) , 在進行 equals 比較之前,會對 9 調用 Integer.valueOf方法,進行自動裝箱 , 由於 IntegerCache 中已經存在 9 ,所以,直接返回其引用,引用相同, equals 就自然相同了。所以結果為真。 
(s.equals( new Integer(9)) ,直接創建了一個新的 Integer 實例,但且值也為 9 ,所以,滿足條件,返回真。
(單選題) 162、下面的程序段創建了BufferedReader類的對象in,以便讀取本機c盤my文件夾下的文件1.txt。File構造函數中正確的路徑和文件名的表示是(    )。
Filef = new File( 填代碼處);
file =new FileReader(f);
in=new BufferedReader(file);
A "./1.txt"
B "../my/1.txt"
C "c: \\my\\1.txt"
D "c:\ my\1.txt"
正確答案是:C
解析:"c: \\my\\1.txt"  "c:/my/1.txt" 都是正確的答案
(單選題) 163、已知表達式int m[]={0,1,2,3,4,5,6};下面哪個表達式的值與數組下標量最大值相等?
A m. length()
B m. length-1
C m. length()+1
D m. length+1
正確答案是:B
解析:
1.數組的下標是從0 開始的,所以數組的下標最大為5。
2.m.length的值為6。
所以,答案為:5=m.length()-1
(單選題) 164、下面的代碼運行的結果是:
class B extends Object{
    static{
        System.out.println("Load B");
    }
    public B(){
        System.out.println("Create B");
    }
}
class A extends B{
    static{
        System.out.println("Load A");
    }
    public A(){
        System.out.println("Create A");
    }
}
public class Testclass{
    public static void main(String[] args){
        new A();
    }
}
A Load B ->Create B->Load A -> Create A
B Load B -> Load A ->Create B ->Create A
C Load B -> Create B-> Create A -> Load A
D Create B ->Create A ->Load B ->Load A
正確答案是:B
解析:初始化塊在構造器執行之前執行,類初始化階段先執行最頂層父類的靜態初始化塊,依次向下執行,最后執行當前類的靜態初始化塊;創建對象時,先調用頂層父類的構造方法,依次向下執行,最后調用本類的構造方法。
 (單選題) 165、對於以下代碼段,4個輸出語句中輸出true的個數是(    )。
class A{}
class B extends A{}
class C extends A{}
class D extends B{}
A obj = new D();
System.out.println(obj instanceof B);
System.out.println(obj instanceof C);
System.out.println(obj instanceof D);
System.out.println(obj instanceof A);
A 1
B 2
C 3
D 4
正確答案是:C
解析:
C直接繼承自A,obj的實際類型為D,和C沒有關系。所以obj instanceof C輸出false。

(單選題) 166、 代碼System. out. println(10 % 3 * 2);將打印出?
A 1
B 2
C 4
D 6
正確答案是:B
解析:%和*優先級相同,順序執行,10%3=1  1*2=2
(不定項選擇題) 167、對於構造方法,下列敘述正確的是( )。
A 構造方法的優先級一般比代碼塊低。
B 構造方法的返回類型只能是void型。
C 構造方法的主要作用是完成對類的對象的初始化工作。
D 一般在創建新對象時,系統會自動調用構造方法。
正確答案是:ACD
解析:
A:靜態成員變量或靜態代碼塊>main方法>非靜態成員變量或非靜態代碼塊>構造方法
B:think in java中提到構造器本身並沒有任何返回值。所以不能用void
C: 構造方法的主要作用是完成對類的對象的初始化工作。
D: 一般在創建(new)新對象時,系統會自動調用構造方法。
(單選題) 168、 java中用()字指明繼承關系.用()關鍵字指明對接口的實現。
A implementsextends
B extendsimplements
C extend implement
D implement extend
正確答案是:B
解析:extends表繼承父類
 implements表是實現接口
(單選題) 169、如果希望某個變量只可以被類本身訪問和調用,則應該使用下列哪一種訪問控制修飾?
A public
B private
C private protected
D protected
正確答案是:B
解析:private修飾的僅自己能訪問,protected同包或子類可以訪問,public是不同包也可以訪問。
 (單選題) 170、對於如下代碼段可以放入到橫線位置,使程序正確編譯運行,而且不產生錯誤的選項是( )
class A{
    public A foo(){return this;}
}
class B extends A{
    public A foo(){
        return this;
    }
}
class C extends B{
    _______
}
A public void foo(){}
B public int foo(){return 1;}
C public A foo(B b){return b;}
D public A foo(){return A;}
正確答案是:C
復習一下子類方法重寫父類方法遵循“兩同兩小一大”的規則
子類覆蓋父類要遵循“兩同兩小一大”
“兩同”即方法名相同,形參列表相同
“兩小”指的是子類方法返回值類型應比父類方法返回值類型更小或相等,子類方法聲明拋出的異常類應比父類方法聲明拋出的異常類更小或相等。
  (注:看到有網友有這樣的疑問,父類方法返回值是double,子類修改成int為什么不行呢?
這是因為返回值類型更大或者更小,是對於同一類型而言的。也就是說,返回值的類型需要有繼承關系才去考慮大小這個概念。類型不同,肯定不是方法重寫)
“一大”指的是子類方法的訪問權限應比父類方法的訪問權限更大或相等。
注意:覆蓋方法和被覆蓋方法要么都是類方法,要么都是實例方法,不能一個是類方法一個是實例方法,否則編譯出錯。
所以,根據這個原理,再來分析上面這道題。
A.public void foo(){}
返回值類型與父類不一致,所以不可能是方法的重寫。又因為方法名相同,那么只能是方法重載,而方法重載有需要滿足三個條件:形參個數、順序、類型必須有一者不同,A選項都不滿足,錯
B.public int foo(){return 1;}
與A選項一樣
C.public A foo(B b){return b;}
返回值類型與父類相同,但由於參數列表不同,所以是對父類方法的重載
D.public A foo(){return A;}   語法錯誤
(單選題) 171、要表示10個學生的成績,下列聲明並初始化數組正確的是()
A int[] score=new int[ ]
B int score[10]
C int score[]=new int[9]
D int score[]=new int[10]
正確答案是:D
解析:
以下兩種寫法都可以:
int score[] = new int[10];
int[] score = new int[10];
注意:數組的下標是從0開始 所以第一個學生的成績則是這樣表示score[0]
(單選題) 172、關於下面代碼 int[] x=new int[25]; 描述正確的是()
A x[25]存放了數據“\0”。
B x[24] 存放了數據“\0”。
C 若訪問x[25],程序將拋出異常。
D x[1]訪問此數組的第一個元素。
正確答案是:C
解析:
A:不存在x[25] 索引從0開始到length-1
B:x[24] 存的是默認值0(java中沒有'\0'這一說)
C:超出內存正確
D:第二元素
(單選題) 173、已知 聲明並初始化二維數組 int a[ ][ ]={{1,2},{3,4},{5,6}} ,則 a[1][1] 的值為()
A 1
B 2
C 4
D 5
正確答案是:C
解析:
二維數組:      0 1
                0  {1,2}
                1  {3,4}
                2  {5,6}  所以a[1][1]=4;
(單選題) 174、面向對象程序設計語言的三個基本特征是?(    )
A 封裝、接口和多態
B 繼承、接口和動態
C 跨平台、接口和動態
D 封裝、繼承和多態
正確答案是:D
解析:
封裝:訪問權限繼承:子父類之間屬性方法的訪問多態:同一個方法名的不同功能


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM