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編譯器在後臺玩的把戲。