今天早上看了一份關於北理工的卷子,覺得不錯,做了下,就當是看看最近自己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編譯器在後臺玩的把戲。