基本运算符&初识Math工具类

  • 算术运算符:+,-,*,/,%,++,–-
  • 赋值运算符:=
  • 关系运算符:>,<,>=,<=,==,!=,instanceof
  • 逻辑运算符:&&,||,!
  • 位运算符:&,|,^,~,>>,<<,>>>
  • 条件运算符:?:
  • 扩展赋值运算符:+=,-=,*=,/=

二元运算符

        int a=1;
        int b=2;
        int c=3;
        int d=4;
        System.out.println(a+b);  //加
        System.out.println(a-b);  //减
        System.out.println(a*b);  //乘
        System.out.println(a/(double)b);  //除
        System.out.println(a%b);   //取余
        System.out.println("------------");

        long a1=12344565364346l;
        int b1=100;
        byte c1=10;
        short d1=4;
        System.out.println(a1+b1+c1+d1);  //结果还是long类型
        System.out.println(b1+c1+d1);  //结果为int类型
        System.out.println(c1+d1);   //结果为int类型

tips:运算时自动升为混合运算类型中最高类型
输出结果:

3
-1
2
0.5
1
------------
12344565364460
114
14

关系运算符

        //关系运算符返回的结果为true false
        int a = 1;
        int b = 2;
        System.out.println(a > b);
        System.out.println(a < b);
        System.out.println(a == b);
        System.out.println(a != b);

输出结果:

false
true
false
true

自增自减运算符(一元运算符)

        int a = 3;
        int b = a++;    //执行完这行代码后,先给b赋值,再自增
        //a++   a = a + 1;
        System.out.println(a);

        //a++   a = a + 1;
        int c = ++a;    //执行完这行代码后,先自增,再给b赋值

        System.out.println(a);
        System.out.println(b);
        System.out.println(c);

幂运算(拓展)

        //幂运算 2^3   2*2*2 = 8 很多运算,我们会使用一些工具类操作!
        double pow = Math.pow(3,2);
        System.out.println(pow);//9.0

逻辑运算符

        //与(and)    或(or)   非(取反)
        boolean a = true;
        boolean b = false;

        System.out.println("a && b: " + (a && b));
        //逻辑与运算:两个变量都为真,结果才为true
        System.out.println("a || b: " + (a || b));
        //逻辑或运算:两个变量有一个为真,啧结果为true
        System.out.println("! (a && b): " + !(a && b));
        //如果是真,则变为假,如果是假,则变为真

        //短路运算
        int c = 5;
        boolean d = (c < 4) && (c++ < 4);
        System.out.println(d);
        System.out.println(c);

位运算

A =    0011 1100
B =    0000 1101
A&B =  0000 1100
A||B = 0011 1101
A^B =  0011 0001
~B =   1111 0010

面试题拓展

用更高效的方法算出 2 * 8 = 16。即 222*2
tips:使用位运算符,效率极高

/*
<<  *2
>>  /2

0000 0000  0
0000 0001  1
0000 0010  2
0000 0011  3
0000 0100  4
0000 1000  8
0001 0000  16
*/
System.out.println(2<<3)//16

扩展赋值运算符(不推荐)

        int a = 10;
        int b = 20;

        a += b; //a = a + b
        a -= b; //a = a - b
        System.out.println(a);//10

        //字符串连接符    +   ,String
        System.out.println("" + a + b);//1020
        System.out.println(a + b + "");//30

条件运算符(三元运算符)

此为必须掌握的运算符

        //x ? y :z
        //如果x==true,则结果为y,否则结果为z

        int score = 50;
        String type = score < 60 ? "不及格":"及格";
        //if
        System.out.println(type);//不及格

运算符优先级

运算符					结合性
[ ] . ( ) (方法调用)			从左向右
! ~ ++ -- +(一元运算) -(一元运算)	        从右向左
* / %					从左向右
+ -					从左向右
> >>>					从左向右
< >= instanceof				从左向右
== !=					从左向右
&					从左向右
^					从左向右
|					从左向右
&&					从左向右
||					从左向右
?:					从右向左
=					从右向左
posted @ 2022-07-30 15:15  ZIK-J  阅读(54)  评论(0)    收藏  举报