1. 程式人生 > >JAVA語言基礎課程作業02

JAVA語言基礎課程作業02

技術 返回值 操作 std public類 構造 進制數 存在 無法

1.一個java類文件中真的只能有一個共有類嗎?

java程序是從一個public類的main函數開始執行的(其實是main線程),就像C程序是從main()函數開始執行一樣。只能有一個public類是為了給類裝載器提供方便。一個public類只能定義在以它的類名為文件名的文件中。

2.為什麽java規定作為程序入口點的main()方法是靜態的?

靜態成員函數在執行前必須先構造並實例化該函數所在的類。
如果允許非靜態的main,那麽main函數所在的類必須先進行實例化,
那麽就需要再寫個函數去實例化main所在的類,再調用main,這個實例化代碼又寫在哪呢?如果它也是非靜態的,豈不是又要寫個函數去實例化它所在的類嘛?
因此,

java語言就規定了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