1. 程式人生 > >Java語言基礎問題

Java語言基礎問題

abstract 通過 spl 源文件 指向 限制 com ont false

1. 一個Java類文件中可以有幾個公有類

技術分享

在eclipse中測試代碼時會出現上圖所示的錯誤,此處只允許用final或abstract來修飾類,也就是一個類文件中只能有一個public修飾的類,此下對於這個問題作出一點分析。

package包主要就是用來存放類的,可以有無數個public類,對此沒有個數限制,但是一個Java源文件中只能有一個public類。

java程序是從一個public類的main函數開始執行的,就像當初學習C語言時一個工程中只能有一個main函數。 只能有一個public類是為了給類裝載器提供方便。如果一個類被聲明為public,則它本身所在的源文件名也必須與類名相同,並且嚴格區分大小寫。

每個編譯單元都只能有一個public 類。因為每個編譯單元都只能有一個公共接口,用public類來表現。該接口可以按照要求包含眾多的支持包訪問權限的類。如果有一個以上的public 類,編譯器就會報錯。 當然一個編譯單元內也可以沒有public類。
在一個源文件.JAVA文件中可以有很多類,只有一個public類。因為在public類中找程序的入口, 若有很多public類,計算機就找不到入口,那麽程序就無法執行了。

2.Java變量遵循“同名變量的屏蔽原則

技術分享

技術分享

通過兩圖對比可以看出,當註釋掉main函數中的int number=1;時顯示結果為0。

因為在此程序中,第一個number為全局變量,第二個number為局部變量。在java中局部變量可以覆蓋全局變量的值,當在局部使用某個變量的時候JVM會優先找和當前使用位置近的變量定義。

3.Java中的類型轉換

技術分享

①byte(字節):8bits,數值範圍為-128-127

②short(短整型):16bits,數值範圍為-32768-32768

③int(整型):32bits,數值範圍為-2147483648-2147483648

④long(長整型):64bits,數值範圍為-9233372036854477808-9233372036854477808

⑤float(浮點型):32bits,數值範圍為-3.40292347E+38-3.40292347E+38

⑥double(雙精度):64bits,數值範圍為-1.7976931486231570E+308-1.7976931486231570E+308

⑦char(字符型):16bits,數值範圍為‘\u0000-u\ffff’

⑧boolean(布爾型):1bits,數值範圍為true/false

上圖中int指向double的箭頭應為實線,而且應還有一條從long指向float的虛線箭頭,此為該圖中的一點錯誤。

Java 語言中的數據類型轉換有兩種:①自動類型轉換:編譯器自動完成類型轉換,不需要在程序中編寫代碼。②強制類型轉換:強制編譯器進行類型轉換,必須在程序中編寫代碼。

自動類型轉換的轉換規則為從存儲範圍小的類型到存儲範圍大的類型,不會發生精度的損失。而強制類型轉換的轉換規則為從存儲範圍大的類型到存儲範圍小的類型,此種轉換會發生精度的損失。

4. 為什麽double類型的數值進行運算得不到“數學上精確”的結果?

float 和double類型主要是為科學計算和工程計算而設計的,他們執行二進制浮點運算,這兩種類型在計算機中的儲存分為三部分:符號位、指數為、尾數部分。數據以二進制存儲在計算機時,會出現無線循環系列,在數據轉化中會出現錯誤。十進制不能準確的表示1/3,同樣二進制不能精確的表示1/10。

double類型的數值占用64bit,即64個二進制數,除去最高位表示正負符號的位,還有63位,而我們給出的數值,在大多數情況下需要比64bit更多的位數才能準確表示出來(甚至是需要無窮多位),而double類型的數值只有64bit,後面舍去的位數一定會帶來誤差,無法得到“數學上精確”的結果。

5.動手動腦

技術分享

語句一輸出中“+”連接X和Y,計算結果是將X和Y將兩數據連接。

語句二輸出中“+”是運算符,對X和Y求和。

 

Java語言基礎問題