注意java int整形變數的取值範圍

來源:互聯網
上載者:User

先做一個範例:目前時間2011-05-18 10:27:01.89

//24 * 60 * 60 * 1000 表示一天的毫秒數,乘於24表示24天<br />long daylong=24* 24 * 60 * 60 * 1000;<br />//System.currentTimeMillis()-daylong表示目前時間減去24天的時間<br />Timestamp t = new Timestamp(System.currentTimeMillis() - daylong);<br />//列印時間<br />System.out.println(t);


程式輸出:2011-04-24 10:27:01.89

當daylong中第一個24改為25時,猜猜輸出是什嗎?2011-04-23 10:27:01.89
  ?

錯了,程式輸出是:2011-06-12 03:27:01.89
,為什嗎?

這是因為25* 24 * 60 * 60 * 1000已經超出整形int的範圍了,在java中,int取值取值範圍為:-2^31~2^31-1
即:-2147483648~2147483647

在int取值範圍下,24* 24 * 60 * 60 * 1000=2073600000
,而25* 24 * 60 * 60 * 1000=-2134967296

解決辦法:強制類型轉換為long類型, long daylong=(long)25* 24 * 60 * 60 * 1000
;此時daylong=2160000000

程式正確輸出:2011-04-23 10:27:01.89

 

聯繫我們

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