為什麼Java7開始在數字中使用底線

來源:互聯網
上載者:User

標籤:結束   lan   html   標識   targe   生活   tca   地方   ref   

JDK1.7的發布已經介紹了一些有用的特徵,儘管大部分都是一些文法糖,但仍然極大地提高了代碼的可讀性和品質。其中的一個特徵是介紹字面常量數位底線。從Java7開始,你就可以在你的Java代碼裡把長整型數字比如10000000000寫成一個更具可讀性10_000_000_000。在字面常量數字中加底線的一個重要的原因是避免一些難以通過看代碼來發現的細微的錯誤。對比10000000000 和1000000000,我們很難發現少了一個0或多了一個0,但對於10_000_000_000和1_000_000_000卻不然。所以如果你在Java源碼中要處理大數字,你可以在數字中加入底線來提高可讀性。使用的時候要注意:在字面常量數字裡加底線是有一定規則的,底線只能在數字之間,在數位開始或結束一定不能使用底線。在本章節的以下部分,我們將學習如何在字面常量數字中使用底線,以及在字面常量數字中使用它們的規則。

怎樣在Java中有效給數字使用底線

正如我之前說的,這不過是個文法糖,非常像字串在 switch 情境下的實現,這也是使用編譯器的協助下實現的。編譯期間,編譯器把這些底線移除,並把真實的數字賦值給變數。比如在編譯期間10_000_000將會被轉化成10000000。既然CPU在處理長數字上毫無壓力,對於我們這些可憐的在處理長數字上有困難的人類來說,就不用為它煩惱了。這個特徵尤其在需要處理大數額金錢、信用卡號碼、銀行帳號以及其它需要長帳號的銀行和金融領域更有用。儘管在寫Java檔案裡寫敏感資訊很讓人沮喪,我們應該永遠不要在編碼的時候這麼做。但在數字中用底線讓我們的生活比以前變得更加簡單了。

在Java中給數字加底線的規則

Java編碼語言對給數值型的字面值加底線有嚴格的規定。如上所述,你只能在數字之間用底線。你不能用把一個數字用底線開頭,或者已底線結尾。這裡有一些其它的不能在數值型字面值上用底線的地方:

  • 在數位開始或結尾
  • 對浮點型數位小數點附件
  • F或L下標的前面
  • 該數值型字面值是字串類型的時候

這裡有一些例子,來表現哪些地方加給數字加底線有效,哪些地方給數字加底線無效

1234567891011121314 float pi1 = 3_.1415F; // 無效的; 不能在小數點之前有底線float pi2 = 3._1415F; // 無效的; 不能在小數點之後有底線long socialSecurityNumber1 = 999_99_9999_L; //無效的,不能在L下標之前加底線int a1 = _52; // 這是一個底線開頭的標識符,不是個數字int a2 = 5_2; // 有效int a3 = 52_; // 無效的,不能以底線結尾int a4 = 5_______2; // 有效int a5 = 0_x52; // 無效,不能在0x之間有底線int a6 = 0x_52; // 無效的,不能在數字開頭有底線int a7 = 0x5_2; // 有效 (16進位數字)int a8 = 0x52_; // 無效的,不能以底線結尾int a9 = 0_52; // 有效(8進位數)int a10 = 05_2; // 有效(8進位數)int a11 = 052_; // 無效的,不能以底線結尾

下面是一些在數字中用底線的其它樣本:

12345678 long creditCardNumber = 6684_5678_9012_3456L; // 在編碼的時候,最好永遠不要這麼做long socialSecurityNumber = 333_99_9999L; // 在編碼的時候,最好永遠不要這麼做float pi = 3.14_15F;long hexBytes = 0xFF_EC_DE_5E;long hexWords = 0xCAFE_BABE;long maxLong = 0x7fff_ffff_ffff_ffffL;byte nybbles = 0b0010_0101;long bytes = 0b11010010_01101001_10010100_10010010;

使用底線後,你會發現你的代碼比以前可讀性更強。順便說一句,在java中應該一直用L去表示一個長整型數字。儘管用小寫l表示長整型數也是合法的,但他看起來太像1了,所以應該永遠都不要用它。告訴我你能不能再 12l和121之間找出差別,我猜能找到的人不多吧。但是在 12L與121之間呢?

總之,要養成在數字中使用底線的習慣,尤其是對長整型數來說,這樣能增加它的可讀性。我知道這個功能只是從Java1.7開始才有效,還沒有被廣泛的使用。但鑒於Java1.8的現狀,我期望Java8在Java社區中傳播比Java7更加迅速更加廣泛。

為什麼Java7開始在數字中使用底線

聯繫我們

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