1. 程式人生 > >JAVA 基礎知識(小收藏)

JAVA 基礎知識(小收藏)

今天早上看了一份關於北理工的卷子,覺得不錯,做了下,就當是看看最近自己java的學習還有什麼漏洞

下面是關於這份卷子http://blog.csdn.net/bitfan/archive/2010/12/13/6072690.aspx

然後作者也給出了對卷子的點評

http://blog.csdn.net/bitfan/archive/2010/12/18/6083926.aspx

http://blog.csdn.net/bitfan/archive/2010/12/18/6083935.aspx

我對比了下,把我覺得理解不是很深刻的題記錄下作者的點評,方便以後查漏

判斷題

2.        通過在程式中引入“ import javax.swing.*; ”語句,就可以使用 javax.swing 包中的所有類(包括其巢狀的子包中的類)。  

(錯)

       要使用巢狀子包中的類,必須再次新增 import 子句

7.   Java Applet 可運行於瀏覽器中,這意味著瀏覽器本身就可以直接執行 Applet 程式。(錯)

    瀏覽器本身只認識HTML,它對其他型別資訊的支援,比如Flash,Applet,Silverlight應用程式等都是通過啟動本地計算機安裝的附加外掛來實現的。

簡答題

1.   現代程式語言有兩種主要的型別:一種是“編譯型 ”的,比如 C ,程式原始碼必須經過編譯才能執行;另一種是“解釋型 ”的,這種型別的語言(比如早期的 Basic )通常都擁有一個互動環境,使用者輸入一句程式碼計算機就執行一句程式碼。

    Java 屬於上述哪種型別?如果你認為 Java 不屬於上述任何一種型別,那麼它是不是一種新的程式語言型別?

    Java源程式需要編譯,但執行時需要即時“解釋”為本地CPU能執行的機器指令,所以它不屬於“純”的編譯型或解釋型,而是一種混合型別。(我之前一直認為java是解釋型的,悲勒個劇)

5.   加法運算子“+”可以施加於原始數值型別(比如 int )的變數,但我們發現一些物件型別(比如 Integer ) 的變數,也支援“+”運算: 

    Integer v1 = 100;

    Integer v2 = 200;

    System.out.println(v1+v2 );  //輸出: 300

    這看上去好象 Integer 型別過載了 “ + ” 法運算子,一些程式語言比如 C ++可以為特定的類過載運算子,但 Java 本身並不支援運算子過載這一特性。依你的理解或猜測, Java 是採用什麼方法讓兩個 Integer 物件可以直接“相加”的? 

    上面程式碼首先是呼叫Integer.valueOf方法將整數轉換為Integer物件,當兩個Integer物件相加時,其實是使用Integer.intValue方法取出其所“包裝”的整數值,相加之後,再將結果輸出。 

    上述結論是通過分析javap反彙編示例程式碼得到的。 

    諸如Java和C#之類的程式語言,許多現象已不僅僅是語法問題,編譯器在其中起了很重要的作用。我在課堂上已經介紹過如何使用javap去反彙編.class檔案,通過閱讀Java編譯器生成的位元組碼指令去弄明白java編譯器在後臺玩的把戲。