JAVA經典筆試題

1.下列程序的運行結果是?java

class HelloA {

    public HelloA() {
        System.out.println("HelloA");
    }
    
    { System.out.println("I'm A class"); }
    
    static { System.out.println("static A"); }

}

public class HelloB extends HelloA {
    public HelloB() {
        System.out.println("HelloB");
    }
    
    { System.out.println("I'm B class"); }
    
    static { System.out.println("static B"); }
    
    public static void main(String[] args) { 
     new HelloB(); 
   }

}

答案是: 數組

static A
static B
I'm A class
HelloA
I'm B class
HelloB

解析:考查靜態語句塊、構造語句塊(就是隻有大括號的那塊)以及構造函數的執行順序。函數

對象的初始化順序:(1)類加載以後,按從上到下(從父類到子類)執行被static修飾的語句;(2)當static語句執行完以後,再執行main方法;(3)若是有語句new了自身的對象,將從上到下執行構造代碼塊、構造器(二者能夠說綁定在一塊兒)。spa

2.下列程序的運行結果是?code

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.print(ex.ch);

    }

    public void change(String str, char ch[]) {

        str = "test ok";

        ch[0] = 'g';

    }
}
A、 good and abc

B、 good and gbc

C、 test ok and abc

D、 test ok and gbc

答案:B對象

解析:你們可能覺得Java中String和數組都是對象因此確定是對象引用,而後就會選D,其實這是個很大的誤區:由於在java裏沒有引用傳遞,只有值傳遞,這個值指的是實參的地址的拷貝,獲得這個拷貝地址後,你能夠經過它修改這個地址的內容(引用不變),由於此時這個內容的地址和原地址是同一地址,繼承

可是你不能改變這個地址自己使其從新引用其它的對象,也就是值傳遞。class

3.java集合繼承關係test

4.java IO繼承關係構造函數

相關文章
相關標籤/搜索