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

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

1.在Java中,一個類可同時定義許多同名的方法,這些方法的形式參數個數、類型或順序各不相同,傳回的值也可以不相同。

這種面向對象程序的特性稱為

正確答案: C

隱藏

覆蓋

重載

Java不支持此特性

2.ArrayList和Vector主要區別是什麼?

正確答案: A

Vector與ArrayList一樣,也是通過數組實現的,不同的是Vector支持線程的同步

Vector與ArrayList一樣,也是通過數組實現的,不同的是ArrayList支持線程的同步

Vector是通過鏈表結構存儲數據,ArrayList是通過數組存儲數據

上述說法都不正確

3.public class Test

{

static boolean foo(char c)

{

System.out.print©;

return true;

}

public static void main( String[] argv )

{

int i = 0;

for ( foo(‘A’); foo(‘B’) && (i < 2); foo(‘C’))

{

i++ ;

foo(‘D’);

}

}

}

What is the result?

正確答案: A

ABDCBDCB

ABCDABCD

Compilation fails.

An exception is thrown at runtime.

題解:
在循環中可分為四部分
1:foo(‘A’) 初始條件
2: foo(‘B’) && (i < 2) 判斷條件
3: i++ ; foo(‘D’); 方法體
4: foo(‘C’) 自增,這個循環把自增寫到方法體中瞭,這個位置用 foo(‘C’) 代替瞭
總之:執行順序就是 先執行1,隻會執行一次,然後是 2 ,然後是3 然後是4 然後繼續2-> 3->4,循環執行,直到2不符合條件。

4.下面哪種情況會導致持久區jvm堆內存溢出?

正確答案: C

循環上萬次的字符串處理

在一段代碼內申請上百M甚至上G的內存

使用CGLib技術直接操作字節碼運行,生成大量的動態類

不斷創建對象

5.如果希望監聽TCP端口9000,服務器端應該怎樣創建socket?

正確答案: B

new Socket(“localhost”,9000);

new ServerSocket(9000);

new Socket(9000);

new ServerSocket(“localhost”,9000);

題解:
ServerSocket (int port)
創建一個serversocket 綁定在特定的端口
Socket(InetAddress address, int port)
創建一個socket流,連接到特定的端口和ip地址

6.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;

}

}

正確答案: D

compiletime error

prints:1

prints:2

prints:3

prints:7

prints:8

題解:
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

7.下列代碼輸出結果為( )

class Animal{

public void move(){

System.out.println(“動物可以移動”);

}

}

class Dog extends Animal{

public void move(){

System.out.println(“狗可以跑和走”);

}

public void bark(){

System.out.println(“狗可以吠叫”);

}

}

public class TestDog{

public static void main(String args[]){

Animal a = new Animal();

Animal b = new Dog();

a.move();

b.move();

b.bark();

}

}

正確答案: D

A:動物可以移動

狗可以跑和走

狗可以吠叫

B:動物可以移動

動物可以移動

狗可以吠叫

C:運行錯誤

D:編譯錯誤

題解:
父類中沒有bark方法,b.move會調用子類的move因為父類也有move,子類可以覆蓋掉,但是父類沒有bark,不存在覆蓋的情況,所有編譯錯誤。

8.下列描述錯誤的是?

正確答案: B D

類隻能繼承一個父類,但是可以實現多個接口

抽象類自身可以定義成員而接口不可以

抽象類和接口都不能被實例化(忽略匿名內部類)

一個類可以有多個父類和多個基接口

9.下面關於面向對象的一些理解哪些是錯誤的( )

正確答案: C

A:面向對象的最重要的特性是支持繼承、封裝和多態

B:系統設計應該遵循開閉原則,系統應該穩定不不可修改,但應支持通過繼承、組合等方式進行擴展

C:函數式的語言必然是面向對象的語言

D:面向對象設計時,每個類的職責應該單一,不要再一個類中引入過多的接口

E:過程式語言和面向對象的語言各有其優勢,過程式語言更加靈活,面向對象語言更加強調抽象和封裝

F:Java和C++都是靜態類型的面向對象編程語言

10.關於Java中的數組,下面的一些描述,哪些描述是準確的:( )

正確答案: A C F

數組是一個對象,不同類型的數組具有不同的類

數組長度是可以動態調整的

數組是一個連續的存儲結構

一個固定長度的數組可類似這樣定義: int array[100]

兩個數組用equals方法比較時,會逐個便利其中的元素,對每個元素進行比較

可以二維數組,且可以有多維數組,都是在Java中合法的

總結

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

推薦閱讀: