標籤:出錯 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課堂相關問題