1. 程式人生 > >JavaSE_筆試題_簡答題2

JavaSE_筆試題_簡答題2

1.Math.round(11.5)等於多少? Math.round(-11.5)等於多少?

 答案:12、-11。Math類中提供了三種與取整數有關的方法:ceil、floor和round。ceil的作用跟名字一樣,天花板就是向上取整。floor的意思是地板,就是向下取整。至於round的四捨五入,就相當於後面的引數+0.5,然後取其整數。

2.介面是否可繼承介面? 
  抽象類是否可實現(implements)介面?
  抽象類是否可抽象類是否可繼承具體類繼承具體類(concrete class)? 
  抽象類中是否可以有靜態的main方法?

 答案:可以、可以、可以、可以。介面可以繼承介面。抽象類可以實現介面。抽象類可以繼承具體類。抽象類中可以有靜態main方法。
注意:抽象類和普通類的唯一區別就是:1.允許有abstract方法。 2.不能建立例項物件。

3.面對物件的特徵有哪幾個方面? 

 答案:面對物件有4個特徵,其分別為:封裝、抽象、繼承、多型。

4.Java中實現多型的機制是什麼?

 答案:動態繫結。父類或介面中的引用變數指向子類或具體實現類的例項物件,而程式呼叫的方法在執行期的時候才進行動態繫結,就是引用變數所指向的具體例項物件的方法,也就是記憶體中正在執行的那個物件的方法。

5.下面的程式程式碼輸出的結果是多少?
public class smallT{
    public static void main(String args[]){
        smallT t = new smallT();
        int
b = t.get(); System.out.println(b); } public int get(){ try{ Return 1 ; } finally{ Return 2 ; } } }

 答案:2。因為finally 中的程式碼比 return 和 break 語句後執行。try 中的 return 語句呼叫的函式先於 finally 中呼叫的函式執行,也就是說 return 語句先執行,finally 語句後執行,所以,返回的結果是2。Return 並不是讓函式馬上返回,而是 return 語句執行後,將把返回結果放置進函式棧中,此時函式並不是馬上返回,它要執行 finally 語句後才真正開始返回。

6.public class Test {
    public static void main(String[] args) {
        System.out. println (new Test().test());
    }

    static int test(){
        int x = 1;
        try{
            return x;
        }
        finally{
            ++x;
        }
    }
}

 答案:1。如果在try程式碼塊中,將x的值返回給了主函式,而在finally中對x的值進行了改動,並不會影響已經返回的x結果。如果在finally中return ++x,那麼才會改變返回值。

7.ListMap的區別?

答案:
<1>list是儲存單列資料的集合,Map是儲存鍵值對(K-V)的集合。
<2>List中儲存的資料是有順序的,允許重複。Map中儲存的資料是沒有順序的,其鍵是不能重複的,它的值可以有重複的。
8.ListSetMap是否繼承自Collection介面?

 答案:List和Set繼承自Collection介面。Map不是。

集合關係

9.執行下列程式的結果是什麼?為什麼?
  String s1 = "str";
  String s2 = "str";
  String s3 = new String("str");

  System.out.prinltn(s1==s2);
  System.out.prinltn(s1.equals(s2));
  System.out.prinltn(s1==s3);
  System.out.prinltn(s1.equals(s3));

 答案:true,true; false,true。因為s1建立的字串是存放在常量池當中,也就是s2並沒有再建立一個String物件,而是s1和s2共同指向常量池的”str”的地址,也就是指向同一個物件,所以s1和s2的地址跟內容都是相同的。
 s3是通過new的方式,是構造器構造出來的物件,而物件都是存放在堆記憶體當中,當然s1和s3的地址就不相同,所以s1==s3等於false,但是他們的字元內容是相同的,又所以s1.equals(s3)是true。

10.s1和s2有什麼區別?
  String s1 = "abc";
  String s2 = new String("abc");

 答案:s1建立了一個物件存放在常量池當中。s2如果常量池當中沒有字串常量“abc”,就會建立兩個物件,一個存放在堆記憶體當中,一個存放在常量池當中。如果常量池中已經存在字串常量”abc”,那麼就只建立一個物件存放在堆記憶體中。