J2EE 學習

          java struts1、struts2 spring hibernate freemarker ajax fckeditor Mysql MSSQL ORACLE DB2 Websphere jboss
          隨筆 - 11, 文章 - 13, 評論 - 2, 引用 - 0
          數據加載中……

          Java中邏輯與,邏輯或,按位與,按位或的區分

          Java中邏輯與,邏輯或,按位與,按位或的區分

          一直以來,對這樣的概念很是模糊,今天總結了一下

          先說說邏輯與(&&),邏輯或(||)
          他們是短路形式的,舉例說明
          ?int i = 0;
          ?? System.out.println ( i++ == 1 && i++ == 2);//打印false
          ?? System.out.println (i);//打印1
          //這里先判斷i++是否等于1,因為是右自增,所以這里i++ == 1是錯誤的,短路就是說不用執行后面的i++ == 2了,
          ? 直接返回一個false,所以這就是最后結果為什么打印1的原因了
          ?i = 0;//這里重新賦值,為了下面的例子明了
          ?? System.out.println ( ++i == 1 && i++ == 2);//打印false
          ?? System.out.println (i);//打印2
          //而這里剛好相反,++i是等于1的,所以就執行了后面的i++ == 2,最終的i的值也就打印2了
          邏輯與是當兩邊的運算都為true時,才返回true,否則返回false,如果左邊返回false,就直接返回false,不再繼續執行右邊的代碼了
          邏輯或是只要有左邊的時是true時,就返回true,不再執行右邊的代碼,但如果左邊的值為false,則返回右邊運算的結果

          按位與& 按位或|

          它們和邏輯與,邏輯或是一樣的,區別就是非短路運算,即&運算符,即使左邊是false,也要執行右邊代碼;|即使左邊是true,也要執行右邊代碼
          還有一點需要指出的區別就是
          邏輯與,邏輯或在Java中運算符必須是boolean類型的,而按位與,按位或可以是int類型的,
          下面我舉例說明他們是如何運行的

          ?? System.out.println( 5&3);//(代碼1) 打印結果1
          ?? System.out.println( 5|3);//(代碼2) 打印結果7
          ?? System.out.println( 4&2);//(代碼3) 打印結果0
          ?? System.out.println( 4|2);//(代碼4) 打印結果6

          二進制碼如下:
          //5 101????? 4 100?
          //3 011????? 2 010?
          //& 001??????? 000?
          //| 110??????? 110??

          按位與的運算:

          看注釋3對于注釋1和2,會發現除了兩位都是1的時候,其余情況下&的結果都是0

          按位或的運算:

          兩個數中都為0的時候結果為0,否則結果為1
          ?

          posted on 2009-08-13 20:38 李峰 閱讀(1180) 評論(0)  編輯  收藏


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


          網站導航:
           
          主站蜘蛛池模板: 班玛县| 新田县| 蓝山县| 喜德县| 铜陵市| 科技| 兰西县| 巧家县| 昌平区| 柘荣县| 潮州市| 彭山县| 榕江县| 和硕县| 张家川| 灯塔市| 政和县| 平阴县| 汝阳县| 衡山县| 双鸭山市| 汝州市| 奉新县| 沈阳市| 大石桥市| 社会| 醴陵市| 东平县| 龙江县| 凤山县| 睢宁县| 资源县| 喀喇沁旗| 祁阳县| 尼木县| 新源县| 顺平县| 嘉荫县| 衢州市| 亳州市| 成武县|