1.什麼是字節碼?採用字節碼的最大好處是什麼
字節碼:Java源代碼經過虛擬機編譯器編譯後產生的文件(即擴展爲.class文件),他不面向特定的處理器,只面向虛擬機。
採用字節碼的最大好處:
java語言通過字節碼的方式,在一定程度上解決了傳統解釋型語言執行效率低的問題,同時又保留了解釋型語言可移植的特點。所以Java程序運行時比較高效,而且,由於字節碼並不專對一種特定的機器,因此,Java程序無需重新編譯便可在多種不同的計算機上運行。
java中的編譯器和解釋器:
Java中引入了虛擬機的概念,即在機器上和編譯程序之間加入了一層抽象和虛擬機器。這臺虛擬的機器在任何平臺上都提供給編譯程序一個共同的接口。編譯程序只需要面向虛擬機,生成虛擬機能夠理解的代碼,然後由解釋器將虛擬機代碼轉換爲特定系統的機器碼執行。在Java中,這種供虛擬機理解的代碼叫做字節碼(即擴展爲.class的文件),它不面向任何特定的處理器,只面向虛擬機。每一種平臺的解釋器是不同的,但是實現的虛擬機只相同的。Java程序通過編譯器編譯後變成字節碼,字節碼由虛擬機解釋執行,虛擬機將每一條要執行的字節碼送給解釋器,解釋器將其翻譯成特定機器上的機器碼,然後在特定的機器上運行,這就是上面提到的Java的特點的編譯與解釋並存的解釋。(編譯器:javac.exe)
2.java中的float和double
double類型代表雙精度浮點數,float類型代表單精度浮點數。一個double類型的數值佔8個字節,64位、一個float類型的數值佔4個字節、32位。
只有浮點類型的數值纔可以使用科學計數法的方式,例如 51200 是一個int類型;但是512E2則是浮點類型的值。
java語言的浮點類型默認是double類型。如果希望Java把一個浮點類型值當成float類型處理,因該在這個浮點類型值後緊跟着f或F。例如5.12是一個double類型的值,佔64位的內存空間;5.12f或者5.12F才表示一個float類型的值,佔32位的內存空間。
java 還提供三個特殊的浮點數值:正無窮大、負無窮大和非數,用於表示溢出和出錯。
例如:使用一個正數除以0得到正無窮大
使用一個負數除以0得到一個負無窮大
0.0除以0.0或對一個負數開方得到一個非數。
所有的正無窮大的數都是相等的,所有的負無窮大都是相等的;而NaN不與任何數值相等,甚至和NaN都不相等。