【JAVA基础篇】运算符
一、表達式
表達式由運算符和操作數組成
例如: 5
num1
num1+num2
sum=num1+num2
二、運算符分類
算數運算符、賦值運算符、關系運算符、邏輯運算符、條件運算符、位運算符
三、算數運算符
?
四、賦值運算符
格式:變量=表達式
例如:int n=3;//將3賦值給變量n
注意:賦值運算符是從右往左運算!賦值運算符的左邊不能是常量!
復合賦值運算符
?
五、關系運算符
比較運算符用于判斷兩個數據的大小,如大于
比較的結果是一個布爾值
六、邏輯運算符
短路運算符:&&和||,左邊的表達式值可以確定結果時,就不再繼續運算右邊的表達式的值
七、條件運算符
Java中的條件運算符是三目運算符
語法:布爾表達式?表達式1:表達式2
八、位運算符
操作二進制位,&,|,<<、>>、>>>
九、運算符優先級
| 1 | ()?[]?. | 從左到右 |
| 2 | !?+(正) ?-(負)?~?++?-- | 從右向左 |
| 3 | *?/?% | 從左向右 |
| 4 | +(加)?-(減) | 從左向右 |
| 5 | <<?>>?>>> | 從左向右 |
| 6 | <?<=?>?>=?instanceof | 從左向右 |
| 7 | ==?? != | 從左向右 |
| 8 | &(按位與) | 從左向右 |
| 9 | ^ | 從左向右 |
| 10 | | | 從左向右 |
| 11 | && | 從左向右 |
| 12 | || | 從左向右 |
| 13 | ?: | 從右向左 |
| 14 | =?+=?-=?*=?/=?%=?&=?|=?^= ?~= ?<<=?>>=?? >>>= | 從右向左 |
ps:&、|、^這三個運算符在操作數分別是數值類型和布爾類型的時候,表示的含義分別是按位與、按位或、按位異或和邏輯與、邏輯或、邏輯異或。上面的表格我其實沒有標識出來是按位還是邏輯,如果有大佬知道優先級的話麻煩在下方評論!
十、位運算符的使用
共同特性:先將操作數轉換成二進制,然后按照二進制位做運算,移位運算符如果超出二進制位的部分丟棄
10.1、<<左移運算符
含義:使指定值的所有位都左移規定的次數
語法格式:value << num
規則:
10.2、>>右移運算符
含義:使指定值的所有位都右移規定的次數
語法格式:value >> num
規則:
10.3、>>>無符號右移運算符
語法格式:value >>> num
規則:
10.4、示例代碼
package org.cc.javase; /*** 位運算符示例* @author cc**/ public class BitOperator {private static int a = 60;//0011 1100private static int b = 13;//0000 1101private static int c = -116;public static void main(String[] args) {//Integer.toBinaryString方法:若高位有連續的0,則高位不顯示 // yu(a,b);//兩個正數做與運算 // yu(a,c);//正負數做與運算,結果一定是一個正數 // huo(a,b);//兩個正數做或運算 // yh(a,b);//兩個正數做異或運算 // qf(a);//正數做取反運算 // yy(b,2);//正數右移兩位 // yy(c,2);//負數右移兩位 // zy(b,2);//正數左移兩位 // zy(c,2);//負數左移兩位 // yy1(c,2);//負數無符號右移兩位}/*** & 與運算* @param a* @param b*/private static void yu(int a,int b){System.out.println("操作數a:"+complement0(a));System.out.println("操作數b:"+complement0(b));System.out.println("操作結果"+complement0(a&b));System.out.println(a&b);}/*** | 或運算* @param a* @param b*/private static void huo(int a,int b){System.out.println("操作數a:"+complement0(a));System.out.println("操作數b:"+complement0(b));System.out.println("操作結果:"+complement0(a|b));System.out.println(a|b);}/*** ^ 異或運算* @param a* @param b*/private static void yh(int a,int b){System.out.println("操作數a:"+complement0(a));System.out.println("操作數b:"+complement0(b));System.out.println("操作結果:"+complement0(a^b));System.out.println(a^b);}/*** ~ 取反* @param a*/private static void qf(int a){System.out.println("操作數a:"+complement0(a));System.out.println("操作結果:"+complement0(~a));System.out.println(~a);}/*** >> 帶符號右移* @param a*/private static void yy(int a,int bitNum){System.out.println("操作數a:"+complement0(a));System.out.println("操作結果:"+complement0(a>>bitNum));System.out.println(a>>bitNum);}/*** << 帶符號左移* @param a*/private static void zy(int a,int bitNum){System.out.println("操作數a:"+complement0(a));System.out.println("操作結果:"+complement0(a<<bitNum));System.out.println(a<<bitNum);}/*** >>> 不帶符號右移* @param a*/private static void yy1(int a,int bitNum){System.out.println("操作數a:"+complement0(a));System.out.println("操作結果:"+complement0(a>>>bitNum));System.out.println(a>>>bitNum);}/** 將高位的0也顯示出來 */private static String complement0(int number){String binaryStr = Integer.toBinaryString(number);StringBuffer sb = new StringBuffer();if(binaryStr.length()<32){int count = 32-binaryStr.length();for(int i=0;i<count;i++) sb.append("0");}return sb.append(binaryStr).toString();}}?
總結
以上是生活随笔為你收集整理的【JAVA基础篇】运算符的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu安装java的rpm_ubu
- 下一篇: 华山松和乔松的区别?