<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    java解惑——循環(huán),你真的會嗎??

    使用StringBuffer時應該注意的:
      StringBuffer sb = new StringBuffer('M');
      sb.append("abc");
      System.out.println(sb.toString());

       該程序會輸出什么呢?   不是 mabc   輸入結(jié)果為: abc
       為什么m沒有輸出來呢?奇怪了? 其實也不是很奇怪,StringBuffer沒有字符為參數(shù)的構(gòu)造方法,只有int作為緩沖區(qū)初始容量的構(gòu)造器。
    在本例子中, new StringBuffer('M') 返回的是一個具有初始容量77的空字符串緩沖區(qū)。


    **2******************************************************************************************************************

     

    下面的程序循環(huán)遍歷byte數(shù)值,以查找某個特定值。這個程序會打印出什么?

    public class BigDelight {
     
    public static void main(String[] args) {
      
    for (byte b = Byte.MIN_VALUE; b < Byte.MAX_VALUE; b++{
       
    if (b == 0x90)
        System.out.println(
    "hello");
      }

     }

    }



     

    結(jié)果什么都沒有打印。
      0x90是一個兩位數(shù)的十六進制字面常量,每一個十六進制位都占據(jù)4個比特的位置,
    所以整個數(shù)值也只占8個比特,即1個byte。問題在于byte是有符號類型,常量0x90是
    一個正的最高位被置為8位int數(shù)值。合法的byte數(shù)值是從-128到+127,但是常量0x90等于+144


    上面這個程序大家應該都能理解,但是下面整個判斷是true還是false呢?
    ( (byte)0x90 == 0x90 ) ,當然是false啦,有點java基礎(chǔ)知識的人都知道會轉(zhuǎn)化成int比較的,
    但轉(zhuǎn)化后值是多少呢? 這個這個。。。。。hoho   (byte)0x90 提升為int數(shù)值-122,而0x90為144


    如果要實現(xiàn)比較,其實也很簡單。

    方法一: 只要我們相同的類型比較就可以啦,蘋果跟蘋果比較,桔子跟桔子比較。
    最上面的程序改成:
    if (b == (byte)0x90)
        System.out.println("hello");
    這就可以打印出來了。

    方法二:
    可以用一個屏蔽碼來消除符號擴展的影響,從而將byte轉(zhuǎn)化為int,之后就可以拿到一個int與另一個int進行比較了。
    if ( (b & 0xff) == 0x90)
        System.out.println("hello");

       雖然上面的兩種方法都可以,但是避免這類問題的最佳方法還是將常量值移到循環(huán)的外面,并在一個常量種定義它。

    1public class BigDelight {
    2 private static final byte TARGET = (byte)0x90;
    3 public static void main(String[] args) {
    4  for (byte b = Byte.MIN_VALUE; b < Byte.MAX_VALUE; b++{
    5   if ( b == TARGET )
    6    System.out.println("hello");
    7  }

    8 }

    9}

     

     




    ****3**************************************************************************************
    下面的程序輸入結(jié)果是什么呢?

    public class Incremet {
     
    public static void main(String[] args) {
      
    int j = 0;
      
    for(int i=0;i<100;i++){
       j 
    = j++;
      }

      System.out.println(j);
     }


    }

     


    乍一看應該慧是100吧。 畢竟做了100次循環(huán)增量。   結(jié)果確是0


    j = j++; 整個操作細分開來大家都知道:
    int temp = j;
    j = j+1 ;
    j = temp;

     那如果是這樣那么結(jié)果就不用懷疑了,j=0

    ****4***************************************************************************


    下面的程序輸出什么呢?

     1public class InTheLoop {
     2 public static final int END = Integer.MAX_VALUE;
     3 public static final int START = Integer.MIN_VALUE;
     4 public static void main(String[] args) {
     5  int count = 0;
     6  for(int i=START;i<=END;i++){
     7   count ++;
     8  }

     9  System.out.println(count);
    10 }

    11}

     

    應該是101吧,應該,那就是錯啦,實際上是:在for循環(huán)中,出現(xiàn)了無限循環(huán)。
    當i達到Integer.MAX_VALUE時,并且再次執(zhí)行增量操作時,它就又繞回到了Integer.MIN_VALUE。 所以就出現(xiàn)無限循環(huán)。

     


    求:尋找一種定義,使得下面的循環(huán)一直無限,
       (1). for(int i=start;i<=start+1;i++){}
       (2). while(i== i+1){}
       (3). while(i !=i ){}
       (4). while(i!= i + 0 ){},附加要求,不能使用浮點數(shù)類型
       (5). while(i<=j && i>=j && i!=j ){}
       (6). while(i!=0 && i== -i ){} 

    解答(1):int start = Integer.MAX_VALUE-1;   //不信你可以試一試
    解答(2):可以用任何計算位無窮大的浮點算術(shù)表達式來實現(xiàn):
    double i = 1.0/0.0; 一般都使用浮點數(shù)常量:double i = Double.POSITIVE_INFINITY;事實上,不必將i初始化為無窮大,
    任何足夠大的浮點數(shù)都可以實現(xiàn)這一目的。例如:double i = 1.0e40;
    解答(3):double i=0.0/0.0; 即:double i = Double.NaN;
    解答(4):把i定義成string類型就可以實現(xiàn)啦
    解答(5):Integer i = new Integer(0);  Integer j = new Integer(0);
    解答(6):int i = Integer.MIN_VALUE; 或 long i = Long.MIN_VALUE;

     


    尋找i一種定義,使得 if( i-i == 0 ){} if中的條件永遠為false?
    解答:double i=0.0/0.0; 即:double i = Double.NaN;

     

     

     

     

     

     

     

     

     


     

    posted on 2009-04-07 22:49 胡鵬 閱讀(282) 評論(0)  編輯  收藏 所屬分類: java基礎(chǔ)

    導航

    <2009年4月>
    2930311234
    567891011
    12131415161718
    19202122232425
    262728293012
    3456789

    統(tǒng)計

    常用鏈接

    留言簿(3)

    隨筆分類

    隨筆檔案

    agile

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 免费福利在线观看| 亚洲综合色丁香麻豆| 亚洲精品天堂无码中文字幕| 国产成人精品免费午夜app| 亚洲国产精品久久久久婷婷软件 | 亚洲精品免费视频| 精品视频在线免费观看| 亚洲色欲久久久综合网东京热 | 91精品全国免费观看青青| 久久亚洲2019中文字幕| 中文在线观看国语高清免费| 国产亚洲日韩一区二区三区| 中文字幕版免费电影网站| 国产91精品一区二区麻豆亚洲| 日韩毛片免费一二三| 亚洲中文字幕久久精品无码APP| 成人免费网站视频www| 中文字幕久久亚洲一区| 久久久久久免费一区二区三区 | av网站免费线看| 伊人亚洲综合青草青草久热| 成人av片无码免费天天看| 亚洲熟女一区二区三区| 免费黄网站在线看| 久久亚洲美女精品国产精品| 91黑丝国产线观看免费| 亚洲午夜电影在线观看高清| 在线免费观看a级片| 亚洲精品色在线网站| 亚洲区不卡顿区在线观看| 72pao国产成视频永久免费| 亚洲AV无码一区二区三区DV | 亚洲AV综合色一区二区三区| ww4545四虎永久免费地址| 2020年亚洲天天爽天天噜| 四虎永久在线精品视频免费观看| 美女被羞羞网站免费下载| 亚洲精品乱码久久久久久蜜桃不卡| 24小时免费看片| 国产成人高清亚洲一区91| 亚洲天堂一区二区|