天天看點

java運算符相關知識

java運算符完整知識點:

public class Operator{

public static void main(String[] args) {

/*
     *運算符:
     *兩方面:
     *a:從功能來分
     * 1.算數運算符      + - *除 % ++ --
     * 2.指派運算符     = *= /= += -=
     * 3.關系運算符    < > <= >= != ==
     * 4.邏輯運算符    &&(與)  ||(或)  !(非)
     * 5.位運算符       直接操作二進制的位 ~(按位取反) ^(按位異或) &(按位與) |(按位或)
     * 6.移位運算符   直接操作二進制的位  >>1右移一位,代表除以2  <<1 左移一位,代表乘以2
     *b:從運算符操作的元素個數來分:
     * 1.一進制運算符:++  --  +(正) -(負) ! ~
     * 2.二進制運算符:+ - * /等等
     * 3.三元運算符:  ?:---三目運算符
     */
           

// *a:從功能來分

// * 1.算數運算符 + - *除 % ++ –

System.out.println(3+4);//7

System.out.println(3*-2);//-6 遵守普通的運算規則

System.out.println(-3/2);//遵守普通的運算規則,隻适合于整數

System.out.println(-3%2);//餘數符号與被除數保持一緻

//++(自增)  --(自減):每次都會自動增加一或者減少一
    //主要研究++
    //兩種情況:
    //>++在前:變量會首先自身加一,再使用加一後的值參與整天的運算
    //>++在後:變量首先參與整體的運算,然後再自身加一
    int a=2,b,c=3,d;
    b=a++;//++在後  b=2 a=3
    d=++c;//++在前  c=4 d=4
           

// * 2.指派運算符 = *= /= += -=

//都是将右邊的值指派給左邊

int f=4;

//注意:定義的變量一定要先給值後參與運算

f+=3;//f=f+3;

int n=2,m=3,u=1,o=0;

o = n++ - –m + (u++ - n–);

System.out.println(n+” “+m+” “+u+” “+o);

// * 3.關系運算符 < > <= >= != ==

//注意:結果隻有true或false

System.out.println(3<4);//true

System.out.println(3==4);//false

// * 4.邏輯運算符 &&(邏輯與) ||(邏輯或) !(非)

//注意點:結果隻有true或者false;參與運算的值也是。

System.out.println(false&&true);//false

System.out.println(true&&true);//true

System.out.println(false||true);//true

System.out.println(!false);//true

System.out.println(3>4 && 5<3);//false

/*
       * 短路與:當有多個&&相連時,從左往右運算,隻要得到一個false,就會停止運算
       * 短路或:當有多個||相連時,從左往右運算,隻要得到一個true,就會停止運算
       */
      System.out.println(false&&true&&true&&true);
      int bb=2,cc=3;
      //隻要得到一個false,就會停止運算,所謂停止運算就是代碼不再執行
      //但是如果後面(其它部分)還有了其它邏輯運算符,将前面連續的值算出後,還需要進行目前運算符(其它部分)的運算
      //boolean istrue=cc++<6 || 3<1 && 4>3 && bb++>1 && 2<4;//true  bb:2  cc:4
      boolean istrue=3<1 && 4>3 && bb++>1 && 2<4|| cc++<6;//true  bb:2  cc:4
      //結果都為true  bb:2  cc:4,cc++進行了運算,也就是說短路與運算後,又進行了或運算。
      System.out.println(istrue+"  bb:"+bb+"  cc:"+cc);//bb=2
           

// * 5.位運算符 直接操作二進制的位 ~(按位取反) ^(按位異或) &(按位與) |(按位或)

/*
       * 執行個體:11和7
       * 1011  11
       * 0111  7
       * 
       * 0011  &
       * 1111  |
       * 1100  ^
       * 
       * 按位取反
       * 1011  11
       * 0100  ~
       * 
       */

      //執行個體:實作兩個數的交換 x=3 y=4
      //第一種方式
      //借助三方變量
      int x=3,y=4,temp=0;
           

// temp=x;

// x=y;

// y=temp;

//上面的弊端:要借助于三方變量

//第二種方式:使用^

x=x^y;

y=x^y;

x=x^y;

System.out.println(“x:”+x+” y:”+y);

// * 6.移位運算符 直接操作二進制的位 >>1右移一位,代表除以2 <<1 左移一位,代表乘以2

//注意:先右移後左移不一定得到原來的數,先左移後右移也不一定得到原來的數。

// >>>無符号右移一位

int z=5>>1;//0101 右移一位 0010

System.out.println(z);//2

z = z<<1;//0010 左移一位 0100

System.out.println(z);//4

// b:從運算符操作的元素個數來分:

// * 3.三元運算符: ?:—三目運算符

//表達式:由變量,常量以及運算符組成的式子

//語句:表達式+; 空語句:;

// ?:—三目運算符

//組成:表達式一>表達式二?值一:值二

//解釋:當表達式一>表達式二成立的時候,整個運算符的結果就是值一,否則取的是值二

int r=4,i=5;

int q=r>i?r:i;

System.out.println(q);

}
           

}

附上java運算符優先級圖檔:

java運算符相關知識

java運算符易錯題目

public static void main(String[] args) {

int a=2,b=1,y=0;

y+= a– - b++ + (a>b?a–:b++);

System.out.println(y);

System.out.println(a);

System.out.println(b);

}

編譯結果為 3 1 3 三目運算符的優先級特别低(為13),是以最後算,不要受括号的幹擾。

本人第一次寫部落格,此篇采用知識點放在代碼塊之中的方式,代碼與知識點結合,更加直覺易懂,适合剛入門java的小白。 歡迎各位指出文中的錯誤,或者補充文中遺漏的java運算符相關知識點。