<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 閱讀(796) 評論(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; // 編譯無法通過,因為損失了精度 
     
    主站蜘蛛池模板: 久久精品毛片免费观看| 在线观看亚洲视频| 一级毛片免费观看不卡的| 亚洲色精品vr一区二区三区| jizz免费一区二区三区| 超清首页国产亚洲丝袜| 污污视频网站免费观看| 全部免费毛片免费播放| eeuss草民免费| 最新精品亚洲成a人在线观看| 久久久精品视频免费观看 | 亚洲国产日韩在线观频| 免费的黄网站男人的天堂| 亚洲AⅤ视频一区二区三区| 无遮挡免费一区二区三区| 免费观看日本污污ww网站一区| 国产精品亚洲色图| 亚洲日本一区二区三区在线不卡| 亚洲免费一区二区| 亚洲ⅴ国产v天堂a无码二区| 91短视频在线免费观看| 亚洲人成免费电影| 午夜视频免费观看| www免费黄色网| 久久99国产亚洲精品观看| 中文字幕免费在线| 亚洲av乱码一区二区三区按摩| 亚洲AV日韩精品一区二区三区| 中国一级特黄的片子免费 | aa级毛片毛片免费观看久| 亚洲av永久无码精品表情包| h片在线免费观看| 精品国产亚洲一区二区三区在线观看 | 四虎永久免费地址在线网站| 91免费福利视频| 亚洲人成电影在线观看网| 免费人成网站7777视频| 无码国产精品一区二区免费vr | 在线播放国产不卡免费视频| 亚洲成人免费在线| 四虎影视www四虎免费|