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);


  }

}

关系运算符

image-20220419144603744

逻辑运算符号

 

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));
  }

}

image-20220419151931138

 

赋值运算符

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);
  }
}

运算符优先级

image-20220419160524571

标识符

image-20220419161316667