posts - 73,  comments - 55,  trackbacks - 0

          1,看下面程序輸出什么?
          public class InTheLoop {

          ????public static final int END = Integer.MAX_VALUE;

          ????public static final int START = END - 100;

          ????public static void main(String[] args) {

          ????????int count = 0;

          ????????for (int i = START; i <= END; i++)

          ????????????count++;

          ????????System.out.println(count);

          ????}

          }
          解答:死循環(huán)(infinite loop)。原因是一個int,是不可能大于Integer.MAX_VALUE的,當(dāng)?shù)竭_(dá)Integer.MAX_VALUE之后繼續(xù)加1,就會默認(rèn)的變?yōu)镮nteger.MIN_VALUE,所以形成了無限循環(huán)。這就提醒我們在處理integral type(包括byte, char, short ,int 和 long)的時候,要小心取值范圍。

          2、JVM中整數(shù)的“/”和“%”運(yùn)算:
          a/b=+(a絕對值/b絕對值)取地板? (ab同號、b!=0)
          ?????=-(a絕對值/b絕對值)取地板? (ab異號、b!=0)
          eg:7/-3=-1,25/4=6
          a%b=+(a絕對值%b絕對值)?????? (a>=0、b!=0)
          ?????? =-(a絕對值%b絕對值)?????? (a<=0、b!=0)
          eg:15%-4=3,-15%-4=-3

          3、用移位運(yùn)算效率較高:
          public static boolean isOdd(int i){//判斷是否為奇數(shù)
          ??? return(i & 1) == 1;
          }

          4、當(dāng)賦值運(yùn)算符出現(xiàn)在if或輸出語句上時:首先進(jìn)行賦值,其次把等號右邊的結(jié)果作為整個表達(dá)式的結(jié)果。
          例1:
          boolean b=true;
          if(b = false){
          ???System.out.println(b);
          ???System.out.println("haha");
          }
          輸出:
          false
          haha
          --------------
          例二:
          boolean b=true;
          ?System.out.println(b=false);
          System.out.println(b);
          輸出為:
          false
          false

          5、當(dāng)計算大數(shù)字的時候,要小心overflow,variable的類型只能決定最后的存儲類型,不能決定中間計算時的臨時存儲類型。比如
          long i = 10000000000000000000000000000 / 1000000000000;

          6、位擴(kuò)展
          a)位擴(kuò)展(widen primitive conversion)時,正數(shù)高位補(bǔ)0,負(fù)數(shù)高位補(bǔ)1。
          b)計算前,正數(shù)和零存為原碼,負(fù)數(shù)存為補(bǔ)碼(去反加一)
          eg:Long.toHexString(0x100000000L + 0xcafebabe)打印為多少?0xcafebabe變?yōu)長ong型為0xffffffffcafebabe 加 0x100000000L = 0x100000000cafebabe,最高位1overflow,結(jié)果為0xcafebabe。
          c)char型占16位,是0——65535,不含負(fù)數(shù),故char位擴(kuò)展時高位全補(bǔ)0
          eg:(int)(char)0xff輸出為65535。

          posted on 2006-06-26 17:41 保爾任 閱讀(188) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           

          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(4)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 黄山市| 平和县| 福泉市| 旬阳县| 本溪市| 东莞市| 贺兰县| 左贡县| 达州市| 南充市| 富平县| 甘洛县| 罗甸县| 会理县| 雅江县| 鹤峰县| 杨浦区| 安龙县| 淮南市| 西安市| 宜宾市| 航空| 海林市| 兰西县| 宾阳县| 汽车| 康平县| 察隅县| 若羌县| 营口市| 扎兰屯市| 醴陵市| 望谟县| 沅江市| 石棉县| 大邑县| 信阳市| 莱西市| 丹阳市| 麻阳| 平南县|