1. 程式人生 > 其它 >java基礎--運算子

java基礎--運算子

算數運算子

package week01;

public class Operator {

   public static void main(String[] args) {
       //最高精度都是int 所以 答案是2
       System.out.println(10/4);
       //高度精度還是int但是算完了還要賦值給double型別所以是2.0
       double d = 10/4;
       System.out.println(d);

       //在java % 的本質是 a - a / b * b;
       // a/b除數 再*b就是除去了多少的數字,最後用總數減去就是餘數
       System.out.println(10%3);
       System.out.println(-10%3);
       //10 - 10/(-3)*(-3)
       System.out.println(10%-3);
       System.out.println(-10%-3);
       //總結前面的如果是負數拿結果就是負數,因為你a-(...),a是絕對值最大的哇,怎麼都掰不過來的

       //自增表示式
       int j = 8,i = 8;
       int k = j++;//k = j,j = j + 1;
       int h = ++i;//i = i + 1,h = i;
       System.out.println(k + "   " +h);

       //練習題
       int p = 1;
       p = p ++;//p = 1,p = p + 1 ×
       //程式執行的時候會有一個temp,temp = i,i = i + 1;i = temp;
       System.out.println(p);

       int g = 1;
       g = ++g;//g = g + 1,temp = g,g = temp;
       System.out.println(g);


  }

}

關係運算符

邏輯運算子號

 

package week01;

public class LogicOperator {

   public static void main(String[] args) {
       //短路與,邏輯與
       int a = 1;
       int b = 9;
       if( a > 5 && ++b < 5)
      {
           System.out.println("OK111");
      }
       System.out.println("a = " + a + "b = " + b);
       if(a > 5 & ++b < 5)
      {
           System.out.println("OK222");
      }
       System.out.println("a = " + a + "b = " + b);
       //兩者的雖然都可以進行判斷但是短路呢短路,一個不通過就直接短路不運行了,但是&不是這樣子的他是都進行判斷不會終止的

       //短路或者,邏輯或
       int c = 1;
       int d = 9;
       if( c < 5 || ++d < 5)
      {
           System.out.println("OK333");
      }
       System.out.println("c = " + c + "d = " + d);
       if(c < 5 | ++d < 5)
      {
           System.out.println("OK444");
      }
       System.out.println("c = " + c + "d = " + d);
       //還是相同道理短路或判斷完第一個如果正確就不判斷了


       //^邏輯異或
       //相等就是false,不相等是true
       System.out.println((10 > 1) ^ (1 > 6));
  }

}

 

賦值運算子

public static void main(String[] args) {

       //複合運算子可以自動轉換資料型別
       byte b = 2;
       b += 2;
       //等價於b =(byte)(b + 2);
       System.out.println(b);
   
   //包括b++也是同理底層有一個型別轉換
  }

三元運算子

package week01;

public class TernaryOperator {
   public static void main(String[] args) {
       int a = 10;
       int b = 99;
       int res = a > b ? a++ : b--;//等於了99,然後才是b = b - 1;
       //三元運算的話還是得運算的不會終止的
       System.out.println(res + "   " + b + " " + a);

       //三元運算子底層就是if else 語句 ,你可以想一想if else語句肯定判斷完了之後執行條件下的語句
       int l = (int) (a > b ? 1.1 : 3.4);
       System.out.println(l);
  }
}

運算子優先順序

識別符號