JAVA語言基礎課程作業02
1.一個java類文件中真的只能有一個共有類嗎?
java程序是從一個public類的main函數開始執行的,(其實是main線程),就像C程序是從main()函數開始執行一樣。只能有一個public類是為了給類裝載器提供方便。一個public類只能定義在以它的類名為文件名的文件中。
2.為什麽java規定作為程序入口點的main()方法是靜態的?
非靜態成員函數在執行前必須先構造並實例化該函數所在的類。
如果允許非靜態的main,那麽main函數所在的類必須先進行實例化,
那麽就需要再寫個函數去實例化main所在的類,再調用main,這個實例化代碼又寫在哪呢?如果它也是非靜態的,豈不是又要寫個函數去實例化它所在的類嘛?
因此,
3.把main()方法的返回值由void改為int,程序能編譯通過嗎?能運行嗎?
在main方法中將void改為int程序可運行,能編譯通過,需要在main方法裏加入return 語句。
4.運行TestDouble.java
運行截圖:
原因分析:
double類型的數值占用64bit,即64個二進制數,除去最高位表示正負符號的位,在最低位上一定會與實際數據存在誤差(除非實際數據恰好是2的n次方)。我們給出的數值,在大多數情況下需要比64bit更多的位數才能準確表示出來(甚至是需要無窮多位),而double類型的數值只有64bit,後面舍去的位數一定會帶來誤差,無法得到“數學上精確”的結果。
5.變量作用域問題:
在Java中,變量的作用域分為四個級別:類級、對象實例級、方法級、塊級。
類級變量又稱全局級變量或靜態變量,需要使用static關鍵字修飾。類級變量在類定義後就已經存在,占用內存空間,可以通過類名來訪問,不需要實例化。 對象實例級變量就是成員變量,實例化後才會分配內存空間,才能訪問。 方法級變量就是在方法內部定義的變量,就是局部變量。
方法內部除了能訪問方法級的變量,還可以訪問類級和實例級的變量。
塊內部能夠訪問類級、實例級變量,如果塊被包含在方法內部,它還可以訪問方法級的變量。
方法級和塊級的變量必須被顯示地初始化,否則不能訪問。
6.同名變量的屏蔽原則:
如果程序代碼中有同名變量,輸出時按照就近原則輸出。
7.類型轉換精度問題得出什麽結論:
byte 占1個字節,有效位8位,範圍-128 ~ +127
short占2個字節,有效位16位,範圍-32768 ~ +32767
int占4個字節,有效位32位,範圍-2^31 ~ +2^31-1
long占8個字節,有效位64位,範圍-2^63 ~ +2^63-1
float占4個字節,有效位32位,範圍-3.403E38~3.403E38
double占8個字節,有效位64位,範圍-1.798E308~1.798E308
char占1個字節,有效位8位
如果兩個操作數中有一個是double類型,另一個就會轉換為double類型;
否則,如果有一個操作數是float,另一個就會轉化為float;
否則,如果有一個操作數是long,另一個就會轉換為long;
否則,兩個操作數都將轉換為int類型。
8.為什麽輸出結果會不同?
int x=100;
int y=200;
System.out.println("x+y="+x+y);
System.out.println(x+y+"=x+y");
第一個輸出語句先輸出了字符,系統把後面+當作連接作用直接輸出了兩個數據的值;第二個輸出語句系統默認第一個+為運算符號,所以輸出結果會有不同。
JAVA語言基礎課程作業02