標籤:[] ext1 數學 bit .com image 接受 stat baidu
1.思考
為什麼java規定作為程式進入點的main() 方法靜態?
在java中,main()方法是java應用程式的入口方法,也就是說,程式在啟動並執行時候,第一個執行的方法就是main()方法,這個方法和其他的方法有很大的不同,比如方法的名字必須是main,方法必須是public static void類型的,方法必須是接受一個字串數組的參數等。
因為main()方法是由Java虛擬機器調用的,所以必須是public,虛擬機器調用的main()方法的時候,不需要產生任何對象,所以main()方法聲明為static,且不需要傳回值,所以必須聲明為void,最終格式如下所示: public void main(String[] args)
2.變數的範圍
樣本
代碼:
package Text;
public class Text1 {
private static int value=1;
public static void main(String[] args)
{
int value=2;
System.out.println(value);
}
}
結果
3. 為什麼double類型的數值進行運算得不到“數學上精確”的結果?
這個涉及到二進位與十進位的轉換問題。
N進位可以理解為:數值×基數的冪,例如我們熟悉的十進位數123.4=1×102+2×10+3×(10的0次冪)+4×(10的-1次冪);其它進位的也是同理,例如位元11.01=1×2+1×(2的0次冪)+0+1×(2的-2次冪)=十進位的3.25。
double類型的數值佔用64bit,即64個位元,除去最高位表示正負符號的位,在最低位上一定會與實際資料存在誤差(除非實際資料恰好是2的n次方)。
舉個例子來說,比如要用4bit來表示小數3.26,從高到低位依次對應2的1,0,-1,-2次冪,根據最上面的分析,應當在位元11.01(對應十進位的3.25)和11.10(對應十進位的3.5)之間選擇。
簡單來說就是我們給出的數值,在大多數情況下需要比64bit更多的位元才能準確表示出來(甚至是需要無窮多位),而double類型的數值只有64bit,後面捨去的位元一定會帶來誤差,無法得到“數學上精確”的結果。
4. 以下代碼的輸出結果是什嗎?
int X=100;
int Y=200;
System.out.println("X+Y="+X+Y);
System.out.println(X+Y+"=X+Y");
輸出
X+Y=100200
300=X+Y
這是因為java的輸出的可以使變數相加,+號在第一次輸出時代表幾個變數依次輸出,第二次輸出代碼代表兩個變數相加。
java一些問題的思考