標籤:代碼 原則 log 方便 許可權 訪問 報錯 font 運算子
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語言基礎問題