<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 403, comments - 310, trackbacks - 0, articles - 7
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    Java Puzzler - 數值處理中容易犯的錯誤

    Posted on 2007-11-10 21:32 ZelluX 閱讀(788) 評論(0)  編輯  收藏 所屬分類: OOP
    Pitfall 1:判斷x的奇偶性
    public static boolean isOdd(int x) {
        
    return x % 2 == 1;
    }
    當x為負奇數時,x % 2的值為負數。
    Note:把 x % 2 == 1 改為 x % 2 != 0

    Pitfall 2:長整數計算
    long MICROS_PER_DAY = 24 * 60 * 60 * 1000 * 1000;
    這個表達式先計算左邊幾個int的乘積,然后再把值轉換為long,因此仍會溢出
    Note:把24改成24L

    Pitfall 3:看看這句話的結果
    System.out.println(12345+5432l);
    Note:5432后面的l很容易被看成1,因此建議使用L表示長整形時都使用大寫。

    Pitfall 4:下面這句話又會是什么結果
    System.out.println(Long.toHexString(0x100000000L + 0xcafebabe));
    Java計算時先用sign-extension把后面一個數轉成long,然后再計算
    Note:盡量避免混合類型計算

    Pitfall 5:這句話呢?
    System.out.println((int) (char) (byte) -1);
    結果是65535
    Note:char是無符號類型,將char轉為int時使用zero-extension

    Pitfall 6:交換變量值
    int x = 1984;
    int y = 2001;
    x ^= y ^= x ^= y;
    最終結果是x == 0, y == 1984
    Note:Java中操作符是從左往右計算的 (JLS 15.7)
    改成 y = (x ^ (y ^= x) ^ y; 就可以,但是永遠不要這么做 
     
    Pitfall 7:問號操作符
    char x = 'X';
    int i = 0;
    System.out.print(true ? x : 0);
    System.out.print(false ? i : x);
    輸出結果為X88
    Note:同樣是混合類型計算導致的問題,建議在條件表達式中使用類型相同的第二和第三操作符。
     
    Pitfall 8:看似相同的表達式的不同結果
    short x = 0;
    int i = 123456;
    1) x += i; // 隱含了類型轉換,結果為-7616
    2) x = x + i; // 編譯無法通過,因為損失了精度 
     
    主站蜘蛛池模板: 亚洲国产91精品无码专区| 免费无码又爽又刺激高潮| 亚洲成aⅴ人片久青草影院| 亚洲中文字幕久久精品蜜桃| 久久久久久精品免费免费自慰| 亚洲成人在线网站| 免费在线中文日本| 亚洲日本中文字幕区| 久久久免费精品re6| 亚洲网站在线播放| 18禁网站免费无遮挡无码中文| 亚洲一级毛片免费观看| 久久久久国产精品免费免费搜索| 亚洲午夜在线播放| 日产乱码一卡二卡三免费| 黄色免费网站在线看| 亚洲精品午夜国产VA久久成人| 女人隐私秘视频黄www免费| 亚洲国产精品无码av| 1000部国产成人免费视频| 自拍偷区亚洲国内自拍| 免费吃奶摸下激烈视频| 99视频免费在线观看| 亚洲国语在线视频手机在线| 好男人看视频免费2019中文| 老司机免费午夜精品视频| 国产精品亚洲аv无码播放| 24小时日本电影免费看| 亚洲av无码一区二区三区人妖| 久久亚洲中文字幕精品一区| 久久久久国产精品免费网站| 国产亚洲精品bv在线观看| 免费在线观看中文字幕| 性xxxxx大片免费视频| 亚洲色偷偷综合亚洲AV伊人蜜桃| 亚洲高清国产拍精品青青草原 | 四虎影视永久免费观看地址| 永久免费无码网站在线观看个| 亚洲国产精品久久久久婷婷软件| 成人毛片18女人毛片免费 | 鲁丝片一区二区三区免费 |