




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、位運算符主要針對二進制,它包括了:“與”、“非”、“或”、“異或”。從表面上看似乎有點像邏輯運算符,但邏輯運算符是針對兩個關系運算符來進行邏輯運算,而位運算符主要針對兩個二進制數的位進行邏輯運算。下面詳細介紹每個位運算符。1與運算符與運算符用符號“&”表示,其使用規律如下:兩個操作數中位都為1,結果才為1,否則結果為0,例如下面的程序段。public class data13public static void main(String args)int a=129;int b=128;System.out.println(a 和b 與的結果是:+(a&b);運行結果a 和b 與的結果是:128
2、下面分析這個程序:“a”的值是129,轉換成二進制就是10000001,而“b”的值是128,轉換成二進制就是10000000。根據與運算符的運算規律,只有兩個位都是1,結果才是1,可以知道結果就是10000000,即128。2或運算符或運算符用符號“|”表示,其運算規律如下:兩個位只要有一個為1,那么結果就是1,否則就為0,下面看一個簡單的例子。public class data14public static void main(String args)int a=129;int b=128;System.out.println(a 和b 或的結果是:+(a|b);運行結果a 和b 或的結果
3、是:129下面分析這個程序段:a 的值是129,轉換成二進制就是10000001,而b 的值是128,轉換成二進制就是10000000,根據或運算符的運算規律,只有兩個位有一個是1,結果才是1,可以知道結果就是10000001,即129。3非運算符非運算符用符號“”表示,其運算規律如下:如果位為0,結果是1,如果位為1,結果是0,下面看一個簡單例子。public class data15public static void main(String args)int a=2;System.out.println(a 非的結果是:+(a);4異或運算符異或運算符是用符號“”表示的,其運算規律是:兩
4、個操作數的位中,相同則結果為0,不同則結果為1。下面看一個簡單的例子。public class data16public static void main(String args)int a=15;int b=2;System.out.println(a 與 b 異或的結果是:+(ab);運行結果a 與 b 異或的結果是:13分析上面的程序段:a 的值是15,轉換成二進制為1111,而b 的值是2,轉換成二進制為0010,根據異或的運算規律,可以得出其結果為1101 即13。Java中的運算符(操作符) 程序的基本功能是處理數據,任何編程語言都有自己的運算符。因為有了運算符,程序員才寫出表達式
5、,實現各種運算操作,實現各種邏輯要求。 為實現邏輯和運算要求,編程語言設置了各種不同的運算符,且有優先級順序,所以有的初學者使用復雜表達式的時候搞不清楚。這里詳細介紹一下Java中的運算符。 Java運算符很多,下面按優先順序列出了各種運算符。優先級運算符分類結合順序運算符由 高到低分隔符左結合. ( ) ; ,一元運算符右結合! + - - 算術運算符移位運算符左結合* / % + - 關系運算符左結合 = instanceof(Java 特有) = = !=邏輯運算符左結合!& | & | 三目運算符右結合布爾表達式?表達式1:表達式2賦值運算符右結合= *= /= %= += -= =
6、= &= *= |=一、一元運算符 因操作數是一個,故稱為一元運算符。運算符含義例子-改變數值的符號,取反-x(-1*x)逐位取反,屬于位運算符x+自加1x+-自減1x-+x 因為+在前,所以先加后用。x+ 因為+在后,所以先用后加。注意:a+ +b和a+b是不一樣的(因為有一個空格)。int a=10;int b=10;int sum=a+ +b;System.out.println(a=+a+,b=+b+,sum=+sum);運行結果是: a=10,b=11,sum=21 int a=10;int b=10;int sum=a+b;System.out.println(a=+a+,b=+b
7、+,sum=+sum);運行結果是:a=11,b=10,sum=20n=10;m=n;變量n的二進制數形式: 00000000 00000000 00000000 00001010逐位取反后,等于十進制的-11:1111111111111111 11111111 11110101二、算術運算符 所謂算術運算符,就是數學中的加、減、乘、除等運算。因算術運算符是運算兩個操作符,故又稱為二元運算符。運算符含義例子+加法運算x+y-減法運算x-y*乘法運算x*y/除法運算x/y%取模運算(求余運算)x%y 這些操作可以對不同類型的數字進行混合運算,為了保證操作的精度,系統在運算過程中會做相應的轉化。數
8、字精度的問題,我們在這里不再討論。下圖中展示了運算過程中,數據自動向上造型的原則。 注:1、實線箭頭表示沒有信息丟失的轉換,也就是安全性的轉換,虛線的箭頭表示有精度損失的轉化,也就是不安全的。 2、當兩個操作數類型不相同時,操作數在運算前會子松向上造型成相同的類型,再進行運算。示例如下:java view plaincopy1. inta=22;2. intb=5;3. doublec=5;4. 5. System.out.println(b+c+=+(b+c);6. System.out.println(b+-+c+=+(b-c);7. System.out.println(b+*+c+=+
9、(b*c);8. System.out.println(a+/+b+=+(a/b);9. System.out.println(a+%+b+=+(a%b);10. System.out.println(a+/+c+=+(a/c);11. System.out.println(a+%+c+=+(a%c);運行結果如下:5+5.0=10.05-5.0=0.05*5.0=25.022/5=422%5=222/5.0=4.422%5.0=2.0三、移位運算符 移位運算符操作的對象就是二進制的位,可以單獨用移位運算符來處理int型整數。運算符含義例子左移運算符,將運算符左邊的對象向左移動運算符右邊指定的
10、位數(在低位補0)x有符號右移運算 符,將運算符左邊的對象向右移動運算符右邊指定的位數。使用符號擴展機制,也就是說,如果值為正,則在高位補0,如果值為負,則在高位補1.x3無符號右移運算 符,將運算符左邊的對象向右移動運算符右邊指定的位數。采用0擴展機制,也就是說,無論值的正負,都在高位補0.x3以int類型的6297為例,代碼如下:java view plaincopy1. System.out.println(Integer.toBinaryString(6297);2. System.out.println(Integer.toBinaryString(-6297);3. System.
11、out.println(Integer.toBinaryString(62975);4. System.out.println(Integer.toBinaryString(-62975);5. System.out.println(Integer.toBinaryString(62975);6. System.out.println(Integer.toBinaryString(-62975);7. System.out.println(Integer.toBinaryString(62975);8. System.out.println(Integer.toBinaryString(-62
12、975); 運行結果:11000100110011111111111111111111001110110011111000100111111111111111111111111001110111100010011111111111111111110011101111000100110010000011111111111111001110110011100000注:xy相當于x/2y 從計算速度上講,移位運算要比算術運算快。 如果x是負數,那么x3沒有什么算術意義,只有邏輯意義。四、關系運算符Java具有完備的關系運算符,這些關系運算符同數學中的關系運算符是一致的。具體說明如下:運算符含義例子小
13、于x大于xy=小于等于x=大于等于x=y=等于x=y!=不等于x!=yinstanceof操作符用于判斷一個引用類型所引用的對象是否是一個類的實例。操作符左邊的操作元是一個引用類型,右邊的操作元是一個類名或者接口,形式如下:obj instanceof ClassName 或者 obj instanceof InterfaceName關系運算符產生的結果都是布爾型的值,一般情況下,在邏輯與控制中會經常使用關系運算符,用于選擇控制的分支,實現邏輯要求。需要注意的是:關系運算符中的=和!=既可以操作基本數據類型,也可以操作引用數據類型。操作引用數據類型時,比較的是引用的內存地址。所以在比較非基本數
14、據類型時,應該使用equals方法。五、邏輯運算符邏輯非關系值表A!Atruefalsefalse true邏輯與關系值表ABA&Bfalsefalsefalsetruefalsefalsefalsetruefalsetruetruetrue 邏輯或關系值表ABA|Bfalsefalsefalsetruefalsetruefalsetrue truetruetruetrue在運用邏輯運算符進行相關的操作,就不得不說“短路”現象。代碼如下:if(1=1 & 1=2 & 1=3) 代碼從左至右執行,執行第一個邏輯表達式后:true & 1=2 & 1=3執行第二個邏輯表達式后:true &fals
15、e & 1=3因為其中有一個表達式的值是false,可以判定整個表達式的值是false,就沒有必要執行第三個表達式了,所以java虛擬機不執行1=3代碼,就好像被短路掉了。邏輯或也存在“短路”現象,當執行到有一個表達式的值為true時,整個表達式的值就為true,后面的代碼就不執行了。“短路”現象在多重判斷和邏輯處理中非常有用。我們經常這樣使用:java view plaincopy1. publicvoida(Stringstr)2. if(str!=null&str.trim().length()0)3. 4. 5. 如果str為null,那么執行str.trim().length()就會
16、報錯,短路現象保證了我們的代碼能夠正確執行。在書寫布爾表達式時,首先處理主要條件,如果主要條件已經不滿足,其他條件也就失去了處理的意義。也提高了代碼的執行效率。位運算是對整數的二進制位進行相關操作,詳細運算如下:非位運算值表AA10 01與位運算值表ABA&B111100010000或位運算值表ABA | B111101011000異或位運算值表ABA&B110101011000示例如下:java view plaincopy1. inta=15;2. intb=2;3. 4. System.out.println(a+&+b+=+(a&b);5. System.out.println(a+|+b+=+(a|b);6. System.out.println(a+b+=+(ab);運算結果如下:15&2=215|2=15152=13程序分析:a111115b00102a&b00102a|b111115ab110113按位運算屬于計算機低級的運算,現在我們也不頻繁的進行這樣的低級運算了。 六、三目運算符三目運算符是一個特殊的運算符,它的語法形式如下:布爾表達式?表達式1:表達式2運算過程:如果布爾表達式的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 瀕危物種監測手段-洞察及研究
- 內蒙古呼倫貝爾市名校2024年數學九年級第一學期期末復習檢測模擬試題含解析
- 陜西省西安市濱河區2024年數學七上期末達標測試試題含解析
- 遼寧省丹東市第五中學2024-2025學年九上數學期末質量檢測試題含解析
- 安康市重點中學2024-2025學年化學九上期末調研模擬試題含解析
- 江蘇省無錫市塔影中學2025屆數學八年級第一學期期末經典試題含解析
- 眉山市重點中學2025屆物理八上期末預測試題含解析
- 河北省滄州滄縣聯考2025屆九上數學期末教學質量檢測模擬試題含解析
- 2024-2025學年內蒙古鄂爾多斯康巴什新區九年級數學第一學期期末質量檢測模擬試題含解析
- 2025年醫學高級職稱-兒童保健(醫學高級)歷年參考題庫含答案解析(5套共100道單選合輯)
- 小數乘除法豎式計算題及答案
- 2024年醫院信息保密制度范本(三篇)
- 第22章 相似形 單元檢測題2023-2024學年滬科版數學九年級上冊
- 血管內超聲IVUS簡介
- DL∕T 2528-2022 電力儲能基本術語
- 山東財經大學《大學英語》2022-2023學年期末試卷
- 2024年歌爾股份有限公司校園招聘考試試題完美版
- peskin量子場論課后答案(芝加哥大學版)
- 醫院專家工作站合作協議書
- 2023年河北語文高考試題
- 2023年禁毒工作全年工作總結
評論
0/150
提交評論