1. 程式人生 > >java課堂相關問題

java課堂相關問題

所有 浮點型 兩個 成員 64bit 情況 height spa http

1、問題:一個java類文件中真的只能有一個公有類嗎?

答:一個Java類文件可以有多個類但只能有一個public類。

如以下程序有兩個public類運行時會出錯。

技術分享

2、問題:把main()方法的返回值由void改為int,程序能編譯通過嗎?能運行嗎?

技術分享技術分享

如上截圖所示將void改為int後程序將無法運行。

3問題:什麽靜態方法?為什麽java規定作為程序入口點的main()方法靜態的?

答:Java靜態方法是使用公共內存空間的,就是說所有對象都可以引用,而且在沒有創建對象時也可以利用類使用該方法。

靜態成員函數在執行前必須先構造並實例化該函數所在的類。如果允許非靜態的main,那麽main函數所在的類必須先進行實例化

4、變量的作用域

如截圖所示java變量遵循“同名變量屏蔽原則”

技術分享

5、java中類型的轉換

技術分享

int,short\,byte,long是整數類型,其值是精確的。而double,float是浮點型其值表示的是近似值。所以intfloatdouble會有精度損失,longdouble會有精度損失。在ASCII中都是整數所以charint無精度損失。

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

double類型的數值占用64bit,即64個二進制數,除去最高位表示正負符號的位,在最低位上一定會與實際數據存在誤差(除非實際數據恰好是2的n次方)。
比如要用4bit來表示小數3.26,從高到低位依次對應2的1,0,-1,-2次冪,根據最上面的分析,應當在二進制數11.01(對應十進制的3.25)和11.10(對應十進制的3.5)之間選擇。
簡單來說就是我們給出的數值,在大多數情況下需要比

64bit更多的位數才能準確表示出來(甚至是需要無窮多位),而double類型的數值只有64bit,後面舍去的位數一定會帶來誤差,無法得到“數學上精確”的結果。

7、在構建BigDecimal對象時應使用字符串而不是double數值,否則,仍有可能引發計算精度問題。(為什麽會這樣呢?)

double並不能準確的代表BigDecimal 16位有效數以上的數字在使用BigDecimal時創建對象。而BigDecimal所創建的對象不能使用+-*/等傳統的算術運算符直接對其對象進行數學運算,必須調用相對應的(f1.add(f2))等方法。 因為方法中的參數必須是BigDecimal的對象,所以定義時應為字符串。

8、

以下代碼的輸出結果是什麽?

int X=100;

int Y=200;

System.out.println("X+Y="+X+Y);

System.out.println(X+Y+"=X+Y");

為什麽會有這樣的輸出結果?

技術分享

從運行結果可以看出第一個輸出是以字符串的形式處理的,而第二個輸出則是以整數相加處理。當X+Y=”在前時,編譯器默認的將XY轉化為String類型,System.out.println()默認參數是String類型。

java課堂相關問題