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的,當?shù)竭_Integer.MAX_VALUE之后繼續(xù)加1,就會默認的變?yōu)镮nteger.MIN_VALUE,所以形成了無限循環(huán)。這就提醒我們在處理integral type(包括byte, char, short ,int 和 long)的時候,要小心取值范圍。

          2、JVM中整數(shù)的“/”和“%”運算:
          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、用移位運算效率較高:
          public static boolean isOdd(int i){//判斷是否為奇數(shù)
          ??? return(i & 1) == 1;
          }

          4、當賦值運算符出現(xiàn)在if或輸出語句上時:首先進行賦值,其次把等號右邊的結(jié)果作為整個表達式的結(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、當計算大數(shù)字的時候,要小心overflow,variable的類型只能決定最后的存儲類型,不能決定中間計算時的臨時存儲類型。比如
          long i = 10000000000000000000000000000 / 1000000000000;

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

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 措勤县| 正安县| 景宁| 辰溪县| 遵义市| 新干县| 海城市| 娄底市| 兴仁县| 米泉市| 青龙| 资阳市| 东辽县| 临潭县| 海丰县| 瑞金市| 孝义市| 壤塘县| 新沂市| 洛浦县| 沾化县| 微博| 遂宁市| 和林格尔县| 札达县| 尤溪县| 平乐县| 安多县| 旬邑县| 金平| 石楼县| 奉化市| 安吉县| 沭阳县| 杨浦区| 鄄城县| 怀仁县| 景宁| 汕头市| 云和县| 英吉沙县|