<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

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲成人动漫在线| 亚洲av乱码一区二区三区| 无码精品人妻一区二区三区免费看 | 亚洲国产精品免费在线观看| 在线亚洲午夜片AV大片| 亚洲高清偷拍一区二区三区| 人妻无码久久一区二区三区免费| 亚洲乱亚洲乱妇24p| 亚洲色自偷自拍另类小说| 日本成年免费网站| 一区二区三区在线观看免费| 亚洲经典在线中文字幕| 亚洲国产成人久久综合区| 最近中文字幕2019高清免费| 免费观看又污又黄在线观看| 亚洲理论片中文字幕电影| 亚洲AⅤ永久无码精品AA| 2020因为爱你带字幕免费观看全集| 鲁死你资源站亚洲av| 亚洲五月六月丁香激情| 免费人成在线观看网站品爱网日本 | 亚洲一区二区三区精品视频| 国产亚洲精aa成人网站| 精品熟女少妇AV免费观看| 你好老叔电影观看免费| 亚洲一久久久久久久久| 亚洲Aⅴ无码专区在线观看q| 亚洲国产精品尤物yw在线| 91免费资源网站入口| 无码精品国产一区二区三区免费| 色多多A级毛片免费看| 中文字幕在线观看亚洲视频| 亚洲国产精品福利片在线观看 | 久久精品国产亚洲77777| 亚洲乱亚洲乱少妇无码| 日韩一区二区三区免费体验| 黄在线观看www免费看| 麻豆精品成人免费国产片| 一级一黄在线观看视频免费| 亚洲成在人线在线播放无码| 亚洲综合视频在线观看|