java課堂相關問題
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)之間選擇。
簡單來說就是我們給出的數值,在大多數情況下需要比
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課堂相關問題