java課堂相關問題

來源:互聯網
上載者:User

標籤:出錯   mil   style   add   pre   system   作用   .com   編譯   

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是浮點型其值表示的是近似值。所以int轉float,double會有精度損失,long轉double會有精度損失。在ASCII中都是整數所以char轉int無精度損失。

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=”在前時,編譯器預設的將X、Y轉化為String類型,System.out.println()預設參數是String類型。

 

java課堂相關問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.