Flyingis

          Talking and thinking freely !
          Flying in the world of GIS !
          隨筆 - 156, 文章 - 16, 評論 - 589, 引用 - 0
          數據加載中……

          [Java Puzzlers]表達式隨想

          ????作者:Flyingis

          ??? 前段時間到書店抱了幾本書回來,雖說網上有很多電子版的資料,但有時候覺得一些比較經典、自己比較喜歡的書籍還是有必要捧在手上細讀的,《Java Puzzlers》就是其中之一,沒事的時候就喜歡拿出來翻翻,怕自己像看新聞報紙一樣看過就淡忘了,還是略作筆記讓自己多份思考。

          ??? 軟件開發人員無論最初是從哪種語言開始學習的,首先都要掌握該語言的編程基礎,例如語句、表達式、變量、數據類型、運算符、字符串等等,這些基礎性的知識簡單,但細節卻比較繁瑣,不同的編譯器也會有不同的編譯規則。以前寢室有同學考過的全國計算機等級考試二級C語言的試題中,語言的礎規則是出題者最熱衷的題形之一,曾經也覺得出題者無聊,只重理論不看實際,畢竟一些表達方法和書寫格式可以通過規范來約束簡化,但是作為一名程序員,一個專業的開發人員,應該了解自己所使用語言的基礎規則,有時候一些程序的BUG就是存在于這些不起眼,或是自己認為應該沒有問題的地方。

          ??? Java語言的表達式和C/C++比較相近,但也存在一些差異,這些差異不僅僅是那些看得見的差異,還有隱性的,例如相同的表達式,編譯的規則不同。因此,我們需要理解Java表達式的一些基礎性知識,加深認識。

          1.? 要精確表達一個浮點型變量,應該使用BigDecimal對象來構造這個實例,使用float或double在一般情況下只是提供了在一定精度范圍下的一種近似,不能產生精確的結果。常用的數據庫中都有與BigDecimal相對應的數據類型,有的更為詳細。
          2.? 對于 long value = 30 * 300 * 3000 * 3000; 來說,long類型可以完整保存右邊表達式計算的結果,但是右邊表達式的計算是按照int類型進行的,只有當右邊表達式計算完成后才會轉換為long類型,在計算過程中,右邊表達式的值就已經超出int范圍,因此會出現計算溢出。
          3.? 通常我們使用最多的是十進制計算,和十進制不同的是,當十六進制或八進制常量的最高位被置位時,該常量是負值。
          4.? 注意數據類型之間的相互轉換(特別是char類型和其他類型間的轉換),以及三目運算符的第二和第三操作數類型不一致的情況處理。
          5.? 在C/C++中,操作符的操作數是從右向左計算,Java中相反。
          6.? 復合賦值操作和簡單賦值操作在一般情況下是相同的,例如 x *= y 和 x = x * y ,但是當x和y類型不同時情況有所變化,例如當x為short類型,y為double類型時,x *= y的結果雖然和想象的有些出入,至少可以編譯通過,但后者賦值卻是非法的。

          ??? 大家可以繼續補充……

          posted on 2006-03-30 23:47 Flyingis 閱讀(1116) 評論(1)  編輯  收藏 所屬分類: JavaSE

          評論

          # re: [Java Puzzlers]表達式隨想[未登錄]  回復  更多評論   

          總結的很好,學習了,謝謝.
          2008-10-26 02:21 | JAVA愛好者
          主站蜘蛛池模板: 浦县| 扶沟县| 济南市| 科尔| 陕西省| 永春县| 安康市| 武威市| 铁力市| 衡东县| 太谷县| 呼玛县| 济宁市| 阜城县| 阿拉善左旗| 石阡县| 六枝特区| 酒泉市| 禹州市| 梁山县| 淮南市| 安丘市| 镇赉县| 威宁| 紫阳县| 南昌县| 密云县| 娄底市| 鄂伦春自治旗| 顺义区| 惠安县| 岑溪市| 化隆| 右玉县| 陆良县| 易门县| 酒泉市| 中西区| 赤壁市| 理塘县| 天柱县|