<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; // 編譯無法通過,因為損失了精度 
     
    主站蜘蛛池模板: 亚洲欧洲精品视频在线观看| 亚洲国产成人一区二区精品区| 亚洲人色大成年网站在线观看| 国内少妇偷人精品视频免费| 曰韩亚洲av人人夜夜澡人人爽| www免费黄色网| 亚洲中文字幕无码日韩| 国产性生大片免费观看性| 亚洲日韩精品射精日| 玖玖在线免费视频| 久久综合亚洲色一区二区三区| 99久久免费中文字幕精品| 亚洲午夜电影在线观看高清 | 免费一级不卡毛片| 麻豆亚洲av熟女国产一区二| 在线永久免费的视频草莓| 亚洲AV无码乱码在线观看代蜜桃 | 日韩视频免费在线| 特级毛片aaaa免费观看| 亚洲处破女AV日韩精品| 永久在线免费观看| 亚洲欧美不卡高清在线| 亚洲综合色在线观看亚洲| 日韩免费无码视频一区二区三区| 亚洲第一永久在线观看| 国产精品深夜福利免费观看| 2022国内精品免费福利视频| 亚洲色图视频在线观看| 四虎免费永久在线播放| 久艹视频在线免费观看| 亚洲久悠悠色悠在线播放| 亚洲天堂在线视频| 久草免费在线观看视频| 免费播放国产性色生活片| 亚洲人成在线播放网站岛国| 成人免费看吃奶视频网站| 伊人久久大香线蕉免费视频| 精品亚洲成在人线AV无码| 国产亚洲美日韩AV中文字幕无码成人 | 亚洲国产综合精品中文字幕| 精品一区二区三区无码免费视频|