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