<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 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    Java Puzzler - 數(shù)值處理中容易犯的錯(cuò)誤

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

    Pitfall 2:長(zhǎng)整數(shù)計(jì)算
    long MICROS_PER_DAY = 24 * 60 * 60 * 1000 * 1000;
    這個(gè)表達(dá)式先計(jì)算左邊幾個(gè)int的乘積,然后再把值轉(zhuǎn)換為long,因此仍會(huì)溢出
    Note:把24改成24L

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

    Pitfall 4:下面這句話(huà)又會(huì)是什么結(jié)果
    System.out.println(Long.toHexString(0x100000000L + 0xcafebabe));
    Java計(jì)算時(shí)先用sign-extension把后面一個(gè)數(shù)轉(zhuǎn)成long,然后再計(jì)算
    Note:盡量避免混合類(lèi)型計(jì)算

    Pitfall 5:這句話(huà)呢?
    System.out.println((int) (char) (byte) -1);
    結(jié)果是65535
    Note:char是無(wú)符號(hào)類(lèi)型,將char轉(zhuǎn)為int時(shí)使用zero-extension

    Pitfall 6:交換變量值
    int x = 1984;
    int y = 2001;
    x ^= y ^= x ^= y;
    最終結(jié)果是x == 0, y == 1984
    Note:Java中操作符是從左往右計(jì)算的 (JLS 15.7)
    改成 y = (x ^ (y ^= x) ^ y; 就可以,但是永遠(yuǎn)不要這么做 
     
    Pitfall 7:?jiǎn)柼?hào)操作符
    char x = 'X';
    int i = 0;
    System.out.print(true ? x : 0);
    System.out.print(false ? i : x);
    輸出結(jié)果為X88
    Note:同樣是混合類(lèi)型計(jì)算導(dǎo)致的問(wèn)題,建議在條件表達(dá)式中使用類(lèi)型相同的第二和第三操作符。
     
    Pitfall 8:看似相同的表達(dá)式的不同結(jié)果
    short x = 0;
    int i = 123456;
    1) x += i; // 隱含了類(lèi)型轉(zhuǎn)換,結(jié)果為-7616
    2) x = x + i; // 編譯無(wú)法通過(guò),因?yàn)閾p失了精度 
     
    主站蜘蛛池模板: 亚洲欧洲国产精品久久| 91免费国产精品| 亚洲精品国产精品国自产网站| 亚洲AV无码一区二三区| 日韩毛片免费无码无毒视频观看 | 久久不见久久见免费影院| 免费人成网站在线观看不卡| 老司机福利在线免费观看| 亚洲精品国产精品| 精品无码一区二区三区亚洲桃色 | 亚洲中文无码永久免| 婷婷亚洲综合五月天小说| 中文字幕在亚洲第一在线| 国产一区二区三区在线观看免费| 在线精品一卡乱码免费| 日日麻批免费40分钟无码 | 亚洲AV无码一区二三区| 日本一道一区二区免费看| 在线观看免费人成视频色9| 亚在线观看免费视频入口| 中文字幕免费在线观看动作大片| 草久免费在线观看网站| 国产偷国产偷亚洲高清在线 | 91频在线观看免费大全| 亚洲国产精品免费观看| 无码国产精品一区二区免费式影视 | 亚洲网站免费观看| 一区二区三区福利视频免费观看| 国产无遮挡无码视频免费软件 | 四虎永久在线精品免费影视 | 亚洲午夜精品在线| 亚洲AV无码一区二区三区在线| 91精品国产亚洲爽啪在线观看| 亚洲天堂中文字幕| 亚洲精品福利网泷泽萝拉| 亚洲春黄在线观看| 亚洲AV无码乱码在线观看代蜜桃| 中文字幕乱码亚洲无线三区 | 成人国产mv免费视频| 国产人妖ts在线观看免费视频| 国产片免费福利片永久|