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

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

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

    hyperjava  
    日歷
    <2008年11月>
    2627282930311
    2345678
    9101112131415
    16171819202122
    23242526272829
    30123456
    統(tǒng)計
    • 隨筆 - 0
    • 文章 - 2
    • 評論 - 2
    • 引用 - 0

    導航

    留言簿

    文章檔案

    搜索

    •  

    最新評論

     
    當一個java算術表達式中包含多個基本類型的值時,整個算術表達式的數據類型將發(fā)生自動提升。Java定義如下的自動提升規(guī)則:
    1. 所有byte型、short型和char型將被提升到int型。
    2. 整個算術表達式的數據類型自動提升到與表達式中最高等級操作數同樣的類型。操作數的等級排列如下圖所示,位于箭頭右邊類型的等級高于位于箭頭左邊類型的等級。


    下面程序示范了一個典型的錯誤:
    //定義一個short類型變量
    short sValue = 5;
    //表達式中的sValue將自動提升到int類型,則右邊的表達式類型為int
    //將一個int類型賦給short類型的變量將發(fā)生錯誤。
    sValue = sValue - 2;
          上面中的sValue -2表達式的類型將被提升到int類型,這樣就是把右邊的int型值賦給左邊的short型變量,從而引起錯誤。

    下面代碼是表達式類型自動提升的正確示例代碼(程序清單同上):

    byte b = 40;
    char c = 'a';
    int i = 23;
    double d = .314;
    //右邊表達式中在最高等級操作數為d(double型)
    //則右邊表達式的類型為double型,故賦給一個double型變量
    double result = b + c + i * d;
    //將輸出144.222
    System.out.println(result);

    必須指出的,表達式的類型將嚴格保持和表達式中最高等級操作數相同的類型,下面代碼中兩個int整數進行除法運算,即使無法除盡,也將得到一個int結果(程序清單同上):
    int val = 3;
    //右邊表達式中2個操作數都是int,故右邊表達式的類型為int
    //因此,雖然23/3不能除盡,依然得到一個int整數
    int intResult = 23 / val;
    //將輸出7
    System.out.println(intResult);
    從上面程序中可以看出,當兩個整數進行除法運算時,如果不能整數,得到結果將是把小數部分截斷取整后的整數。

    如果表達式中包含了字符串,則又是另一番情形了:因為把加號(+)放在字符串和基本類型值之間時,這個加號是一個字符串連接運算符,而不是進行加法運算。看如下代碼:
    //輸出字符串Hello!a7
    System.out.println("Hello!" + 'a' + 7);
    //輸出字符串104Hello!
    System.out.println('a' + 7 + "Hello!");
    對于第一個表達式"Hello!" + 'a' + 7,先進行"Hello!" + 'a'的運算,將把'a'轉換成字符串,將拼接成字符串Hello!a,接著進行"Hello!a" + 7的運算,這也是一個字符串連接運算,得到結果是Hello!a7。對于第二個表達式,先進行'a' + 7加法運算,其中'a'自動提升到int型,變成a對應的ASCII值:97,從97 + 7將得到104,然后進行104 + "Hello!",104會自動轉換成字符串,將變成兩個字符串的連接運算,從而得到104Hello!。
    posted on 2008-11-21 13:04 hyperjava 閱讀(3597) 評論(2)  編輯  收藏
    評論:
    • # re: java表達式類型的自動提升  nexstone Posted @ 2008-11-25 17:07
      樓主這篇文章有些眼熟啊,是不是參考李剛的《瘋狂java講義》的啊?  回復  更多評論   

    • # re: java表達式類型的自動提升  hyperjava Posted @ 2008-11-28 17:47
      回樓上的,是啊  回復  更多評論   


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


    網站導航:
     
     
    Copyright © hyperjava Powered by: 博客園 模板提供:滬江博客
    主站蜘蛛池模板: 最近免费最新高清中文字幕韩国| 思思久久99热免费精品6| 最近中文字幕完整版免费高清| 亚洲精品无码鲁网中文电影| 岛国岛国免费V片在线观看 | 日韩成人免费aa在线看| 亚洲精品无码久久久久牙蜜区| 人禽杂交18禁网站免费| 久久久国产亚洲精品| 免费观看的a级毛片的网站| 亚洲丁香婷婷综合久久| 免费国产高清视频| 精品乱子伦一区二区三区高清免费播放 | 久久亚洲精品无码| 最近中文字幕国语免费完整 | 午夜神器成在线人成在线人免费| 亚洲经典千人经典日产| 亚洲国产成人精品无码久久久久久综合| 无码精品人妻一区二区三区免费| 亚洲乳大丰满中文字幕| 99视频免费播放| 亚洲永久在线观看| 可以免费观看一级毛片黄a | 中文字幕在线观看亚洲视频| 国产资源免费观看| 最近2019中文免费字幕在线观看| 精品亚洲成a人片在线观看| 成人a免费α片在线视频网站| 免费大片av手机看片高清| 亚洲爆乳无码一区二区三区| 中文字幕无码免费久久99| 五月天国产成人AV免费观看| 亚洲精品高清久久| 免费观看大片毛片| 国产精品白浆在线观看免费| 亚洲欧洲国产综合AV无码久久 | 亚洲成a人片在线观看日本麻豆| 日韩视频在线观看免费| 亚洲av无码专区青青草原| 亚洲一区二区三区在线观看精品中文| 每天更新的免费av片在线观看|