Java基礎筆試題目記錄__Java

來源:互聯網
上載者:User
記錄一些遇到的不錯的筆試題 1、
下列 java 程式輸出結果為______。int i=0;Integer j = new Integer(0);System.out.println(i==j);System.out.println(j.equals(i));

答案:true true

解析:
本題是一個自動拆裝箱的考題(自動拆裝箱JDK需在1.5上)
1、基本型和基本型封裝型進行“==”運算子的比較,基本型封裝型將會自動拆箱變為基本型後再進行比較,因此Integer(0)會自動拆箱為int類型再進行比較,顯然返回true;
2、兩個Integer類型進行“==”比較,如果其值在-128至127,那麼返回true,否則返回false, 這跟Integer.valueOf()的緩衝對象有關,這裡不進行贅述。
3、兩個基本型的封裝型進行equals()比較,首先equals()會比較類型,如果類型相同,則繼續比較值,如果值也相同,返回true
4、基本型封裝類型調用equals(),但是參數是基本類型,這時候,先會進行自動裝箱,基本型轉換為其封裝類型,再進行3中的比較。

int a=257;Integer b=257;Integer c=257;Integer b2=57;Integer c2=57;System.out.println(a==b);//System.out.println(a.equals(b));  編譯出錯,基本型不能調用equals()System.out.println(b.equals(257.0));System.out.println(b==c);System.out.println(b2==c2);

上面的代碼的結果因此為 true, false, false, true 2、

下面程式輸出結果是__

public class Test {      public static void main(String [] args){          System.out.println(new B().getValue());      }      static class A{          protected int value;          public A(int v) {              setValue(v);          }          public void setValue(int value){              this.value = value;          }          public int getValue(){              try{                  value++;                  return value;              } catch(Exception e){                  System.out.println(e.toString());              } finally {                  this.setValue(value);                  System.out.println(value);              }                     }      }      static class B extends A{          public B() {              super(5);              setValue(getValue() - 3);          }          public void setValue(int value){              super.setValue(2 * value);          }      }  }  

答案:22 34 17

解析:
最關鍵的一點是:super(5) //調用了父類構造器,其中建構函式裡面的setValue(value),由於子類有重寫,所以調用的是子類的setValue方法 3、

閱讀下列程式,選擇哪一個是正確的輸出結果

class HelloA{public HelloA()    {        System.out.println("I’m A class ");    }    static    {    System.out.println("static A");    }}public class HelloB extends HelloA{    public 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 I’m B class

解析:
該題目中的執行順序:

   父類的靜態變數和靜態塊賦值(按照聲明順序)

   自身的靜態變數和靜態塊賦值(按照聲明順序)

   父類成員變數和塊賦值(按照聲明順序)

   父類構造器賦值

  自身成員變數和塊賦值(按照聲明順序)

   自身構造器賦值
類的靜態代碼塊是屬於類層級,執行優先順序高於普通代碼塊>建構函式。總結就是:父類的靜態代碼塊(包括靜態變數賦值)優先執行,然後執行自身的靜態代碼塊,然後執行父類的普通代碼塊,再執行父類的建構函式,然後執行自身的普通代碼塊,再執行自身的建構函式。 4、

關於下面程式碼片段敘述正確的是()

byte b1=1,b2=2,b3,b6; final byte b4=4,b5=6; b6=b4+b5; b3=(b1+b2); System.out.println(b3+b6);

A 、輸出結果:13
B 、語句:b6=b4+b5編譯出錯
C、語句:b3=b1+b2編譯出錯
D、運行期拋出異常

正確答案C。
解析:
為什麼不選擇B,是因為b4、b5被final修飾,所以在運算的時候,不會被升級為int類型,而b1和b2在啟動並執行 時候被升級成了int類型,而b3是byte類型,類型不符。 5、

以下代碼在編譯和運行過程中會出現什麼情況

public class TestDemo{    private int count;    public static void main(String[] args) {        TestDemo test=new TestDemo(88);        System.out.println(test.count);    }     TestDemo(int a) {         count=a;    }}

A、編譯運行通過,輸出結果是88
B、編譯時間錯誤,count變數定義的是私人變數
C、編譯時間錯誤,System.out.println方法被調用時test沒有被初始化
D、編譯和執行時沒有輸出結果
正確答案:A
解析:
私人變數外部無法訪問,這個外部指的是類的外部,而這裡的main方法是在大類TestDemo的內部,所以說是可以訪問到的。有如下代碼:

public class Demo2 {    private int count;    public Demo2(int a){        count = a;    }    public static void main(String[] args) {        Demo2 d = new Demo2(88);        System.out.println(d.count);//正常運行,無報錯        P p = new P(88);        System.out.println(p.count);//此行編譯期間報錯,私人變數訪問不到    }}class P{    private int count;    public P(int a){        count = a;    }}
6、

以下程式輸出結果是什麼。

class TestA {    public void printValue(){        System.out.println("Test01");    }}class TestB extends TestA{    public void printValue(){        System.out.println("TestB");    }}public class Test01 {    public static void main(String[] args) {        TestB b = new TestB();        b.printValue();        TestA a = (TestA)b;//類型轉換        a.printValue();    }}

輸出結果:
TestB
TestB
解析:
這裡關鍵是類型轉換那一行,由於b本身的定義是TestB類型,這裡沒發轉成TestA類型,輸出仍然是“TestB”

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.