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)。原因是一個(gè)int,是不可能大于Integer.MAX_VALUE的,當(dāng)?shù)竭_(dá)Integer.MAX_VALUE之后繼續(xù)加1,就會(huì)默認(rèn)的變?yōu)镮nteger.MIN_VALUE,所以形成了無(wú)限循環(huán)。這就提醒我們?cè)谔幚韎ntegral type(包括byte, char, short ,int 和 long)的時(shí)候,要小心取值范圍。

          2、JVM中整數(shù)的“/”和“%”運(yùn)算:
          a/b=+(a絕對(duì)值/b絕對(duì)值)取地板? (ab同號(hào)、b!=0)
          ?????=-(a絕對(duì)值/b絕對(duì)值)取地板? (ab異號(hào)、b!=0)
          eg:7/-3=-1,25/4=6
          a%b=+(a絕對(duì)值%b絕對(duì)值)?????? (a>=0、b!=0)
          ?????? =-(a絕對(duì)值%b絕對(duì)值)?????? (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或輸出語(yǔ)句上時(shí):首先進(jìn)行賦值,其次把等號(hào)右邊的結(jié)果作為整個(gè)表達(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)計(jì)算大數(shù)字的時(shí)候,要小心overflow,variable的類型只能決定最后的存儲(chǔ)類型,不能決定中間計(jì)算時(shí)的臨時(shí)存儲(chǔ)類型。比如
          long i = 10000000000000000000000000000 / 1000000000000;

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

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

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


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

          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(4)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 浮梁县| 康定县| 潼关县| 牙克石市| 堆龙德庆县| 高平市| 上犹县| 米脂县| 梅州市| 柯坪县| 呼玛县| 水城县| 三穗县| 米脂县| 泌阳县| 永川市| 勐海县| 正宁县| 天峻县| 惠来县| 德钦县| 株洲市| 通城县| 娄烦县| 龙里县| 潢川县| 台北市| 武汉市| 塔城市| 齐河县| 固阳县| 宜州市| 崇文区| 陆良县| 凤城市| 沭阳县| 苍梧县| 鲁甸县| 长阳| 宁河县| 肃宁县|