最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java代碼之謎運算符篇

 更新時間:2012年11月16日 15:23:02   作者:  
從最簡單的運算符加號(+)說起,加號(+)是個二元運算符——也就是說,加號只把兩個數(shù)聯(lián)接起來,從來不把第三個或者更多的聯(lián)接起來
從最簡單的運算符加號(+)說起,加號(+)是個二元運算符——也就是說,加號只把兩個數(shù)聯(lián)接起來,從來不把第三個或者更多的聯(lián)接起來。
因此,“1加2加3” 在計算機中被表述為:
(1 + 2) + 3 // a或者
1 + (2 + 3) // b雖然我們通常寫做 1 + 2 + 3,但是并不意味這它和我們數(shù)學中的 1+2+3 是等價的。
那么數(shù)學中的 1+2+3 到底表示的是 a 呢,還是 b 呢?
如果計算機的求值是左結合的,那么此表達式等價于第一種a; 如果是右結合的,那么此表達式等價于第二種b。
1 + 2 + 3 簡單的理解就是 “把1、2、3加在一起”, 確實,在我們接觸到的數(shù)學里面,就是把三個數(shù)加起來。 但是在編程語言中,卻不僅僅這樣。
就像前面說的那樣,+號無法操作三個或者更多的數(shù),參與加法運算的只能是兩個數(shù)。
順便說一句,正號、負號是一元運算符,雖然它們和二元運算符加、減用相同的符號, 但是他們卻是不同的,所以不要想當然的認為 +4 就等價于 0+4,其實它們不是等價的,
+4 是一個整數(shù),但是 0+4 是一個加法表達式,這個表達式的求值結果正好是 +4。
在 java 中,我們可以寫 short a = +4,但是當我們寫 short a = 0 + 4 時則產(chǎn)生一個警告。
還有一個其它例子,同樣是關于 short 的,
short b = 1;
short b = b + 4; // 警告
short b += 4; // 無警告那么 1 + 2 + 3 是如何運算的呢? 在馮諾依曼體系架構的編程語言中, 這里有一個副作用——我習慣稱那些“計算機的運算過程與程序員的大腦思考過程不一樣時,則稱為副作用”(雖然書本里面沒有這么寫過,但我一向這么認為), 本來你以為會是這樣,結果計算機偏偏就不是這樣做的,我稱他為副作用。
如果看過前面的『語句與表達式』,這可以這么理解:
1 + 2 是一個表達式,它的返回值是 3。 這個表達式的返回值再參加到另一個表達式中 3 + 3,最后得出結果6。
我們用語句(Statement)來改寫這段代碼:
// 計算 1 + 2 + 3
var a = 1 + 2;
var b = a + 3;如果我們用 lisp 語言對這個表達式求值,則沒有副作用。
(+ (+ 1 2) 3)如果你還沒有懂,或者這個例子太有特殊性,那么我們換一個
5 > 4 > 3在數(shù)學中,這個算式的值為 true。當我們用C語言來寫這段代碼,它返回的確實 false。
原因和上面的一樣,大于號(>)是二元運算,它無法直接比較三個數(shù),5 > 4 返回的結果是 true, 當用 true 和 3 比較時,true 被轉換稱 1,也就是 1 > 3,最終的結果自然就是 false 了。
總之,回歸到了『語句與表達式』篇的那個觀點:在編程語言中 每個表達式都有一個值。
編程語言中的運算符和數(shù)學中的運算器雖然一樣,但是它們卻并不等同。 當你寫程序時,要寫給人看; 當你調試程序時,要學會用計算機的方式思考代碼的含義。
我習慣于把運算符理解為函數(shù),比如 2 + 5 其實就是 add(2, 5) 或者 2.add(5)。 難道我會偷偷的告訴你 “其實很多語言都是這么做的”。

相關文章

  • 基于Java實現(xiàn)Json文件轉換為Excel文件

    基于Java實現(xiàn)Json文件轉換為Excel文件

    這篇文章主要為大家詳細介紹了如何利用Java實現(xiàn)Json文件轉換為Excel文件,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的可以參考一下
    2022-12-12
  • springboot詳解整合swagger方案

    springboot詳解整合swagger方案

    Swagger是一個規(guī)范和完整的框架,用于生成、描述、調用和可視化?Restful?風格的?Web?服務??傮w目標是使客戶端和文件系統(tǒng)作為服務器以同樣的速度來更新。文件的方法、參數(shù)和模型緊密集成到服務器端的代碼,允許API來始終保持同步
    2022-07-07
  • Java中字節(jié)流和字符流的區(qū)別與聯(lián)系

    Java中字節(jié)流和字符流的區(qū)別與聯(lián)系

    Java中的字節(jié)流和字符流是用于處理輸入和輸出的兩種不同的流,本文主要介紹了Java中字節(jié)流和字符流的區(qū)別與聯(lián)系,字節(jié)流以字節(jié)為單位進行讀寫,適用于處理二進制數(shù)據(jù),本文結合實例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2024-12-12
  • 如何將Set直接轉成數(shù)組

    如何將Set直接轉成數(shù)組

    這篇文章主要介紹了如何將Set直接轉成數(shù)組,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • 基于java使用JavaMail發(fā)送郵件

    基于java使用JavaMail發(fā)送郵件

    這篇文章主要介紹了基于java使用JavaMail發(fā)送郵件 ,非常具有實用價值,需要的朋友可以參考下。
    2016-12-12
  • java實現(xiàn)計算器模板及源碼

    java實現(xiàn)計算器模板及源碼

    這篇文章主要為大家詳細介紹了java實現(xiàn)計算器模板及源碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Mybatis-Plus實現(xiàn)用戶ID自增出現(xiàn)的問題解決

    Mybatis-Plus實現(xiàn)用戶ID自增出現(xiàn)的問題解決

    項目基于 SpringBoot + MybatisPlus 3.5.2 使用數(shù)據(jù)庫自增ID時, 出現(xiàn)重復鍵的問題,本文就來介紹一下解決方法,感興趣的可以了解一下
    2023-09-09
  • MyBatis下SQL注入攻擊的3種方式

    MyBatis下SQL注入攻擊的3種方式

    SQL注入漏洞作為WEB安全的最常見的漏洞之一,本文希望通過Mybatis框架使用不當導致的SQL注入問題為例,能夠拋磚引玉給新手一些思路。感興趣的可以了解一下
    2021-07-07
  • java并發(fā)編程synchronized底層實現(xiàn)原理

    java并發(fā)編程synchronized底層實現(xiàn)原理

    這篇文章主要介紹了java并發(fā)編程synchronized底層實現(xiàn)原理
    2022-02-02
  • Maven導入依賴時爆紅的幾種解決方法

    Maven導入依賴時爆紅的幾種解決方法

    使用idea建立maven項目,maven導入依賴報紅,本文主要介紹了Maven導入依賴時爆紅的幾種解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-04-04

最新評論

滦南县| 西青区| 曲沃县| 丹江口市| 辽中县| 虹口区| 沧州市| 平原县| 灵川县| 隆林| 奉节县| 台东县| 霍邱县| 嘉鱼县| 铁岭市| 汕头市| 萨迦县| 龙泉市| 兴宁市| 黄大仙区| 历史| 吕梁市| 保山市| 离岛区| 刚察县| 石台县| 盐源县| 东兴市| 增城市| 互助| 罗甸县| 叙永县| 永春县| 三穗县| 乡宁县| 舞钢市| 祁门县| 吴川市| 门源| 开鲁县| 靖远县|