java一些問題的思考

來源:互聯網
上載者:User

標籤:[]   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一些問題的思考

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.