【学习日记(运算符)】Day.9

运算符

Java 语言支持如下运算符: 优先级 ()

  • 算术运算符:+,-,*,/,%(模),++,--

  • 赋值运算符:=

  • 关系运算符:>,<,>=,<=,==(Java里的等于是两个==),!=,instanceof

  • 逻辑运算符:&&,||,!

  • 位运算符:&,|,……,~,>>,<<,>>>(了解!!!)

  • 条件运算符: ?:

  • 扩展赋值运算符:+=,-=,*=,/=

        //二元运算符
       int a = 10;
       int b = 20;
       int c = 25;
       int d = 25;

       System.out.println(a+b);
       System.out.println(a-b);
       System.out.println(a*b);
       System.out.println(a/(double)b);
     long a = 12123132121231321L;
       int b = 123;
       short c = 10;
       byte d = 8;

       System.out.println(a+b+c+d);//Long 运算中如有一个数值为Long,那么运算结果也为Long,如果没有Long,便为int。
       System.out.println(b+c+d);//Int cast:转换   如有一个数值位Double,则结果也为Double
       System.out.println(c+d);//Int
        //关系运算符返回的结果: 正确,错误   布尔值
       //if

       int a = 10;
       int b = 20;
       int c = 21;

       //取余 也叫模运算
       System.out.println(c%a); // c/a 21/10 = 2 ... 1

       System.out.println(a>b);
       System.out.println(a<b);
       System.out.println(a==b);
       System.out.println(a!=b);

自增自减符

一元运算符

  • “++” 自增

  • “--”自减

        //++   --    自增,自减   一元运算符
       int a = 3;

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


       System.out.println(b);//3
       System.out.println(b);
       System.out.println(c);//5
       System.out.println(c);

幂运算

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

逻辑运算符

与 (and) 或 (or) 非 (取反)

  • "a && b" 逻辑与运算:两个变量都为真,结果才为true

  • "a||b" 逻辑与运算:两个变量有一个为真,结果才为true(两个变量都为假才为false)

  • "!(a&&b)" 如果是真,则变为假,如果是假,则变为真。

        boolean a = true;
       boolean b = false;

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

短路运算

如果“a&&b”中 前者“a”已经为false,则不进行“b”的运算

        int c = 5;
       boolean d = (c<4)&&(c++<4);

       System.out.println(d);//false
       System.out.println(c);//5


       int h = 10;
       boolean y = !((h>20)&&(h++>20));

       System.out.println(y);//true
       System.out.println(h);//10

位运算

       /*
       A = 0011 1100
       B = 0000 1101
       ------------------
       A&B = 0000 1100 同为1才能得1,其余为0
       A|B = 0011 1101 同为0才为0,如果有1则为1
       A^B = 0011 0001 如相同位置数字相同为0,不同为1
       ~B = 1111 0010   与原数字完全相反

       2*8 = 16   2*2*2*2
       效率极高!!!
       <<左移 *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

扩展赋值运算

例: a+=b; //a = a+b

a-=b; //a = a-b

字符串连接符 "+"

String(字符串)

       System.out.println(""+a+b); //如果字符串在前面 ,转换成字符串进行链接 输出1020

      System.out.println(a+b+"");//如果字符串在后面 ,依旧进行运算 输出30

三元运算符

x ? y : z

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

例:

        int score = 80;
       String type = score <60 ?"不及格":"及格";  //必须掌握
       // if(以后会学)
       System.out.println(type);

运算符的优先级

优先级运算符结合性
1 ()、[]、{} 从左向右
2 !、+、-、~、++、-- 从右向左
3 *、/、% 从左向右
4 +、- 从左向右
5 «、»、>>> 从左向右
6 <、<=、>、>=、instanceof 从左向右
7 ==、!= 从左向右
8 & 从左向右
9 ^ 从左向右
10 | 从左向右
11 && 从左向右
12 || 从左向右
13 ?: 从右向左
14 =、+=、-=、*=、/=、&=、|=、^=、~=、«=、»=、>>>= 从右向左

源代码就是一份文档,源代码的可读性比代码运行效率更重要。 因此在这里要提醒大家:

  • 不要把一个表达式写得过于复杂,如果一个表达式过于复杂,则把它分成几步来完成。

  • 不要过多地依赖运算符的优先级来控制表达式的执行顺序,这样可读性太差,尽量使用()来控制表达式的执行顺序。

此部分来源于C语言中文网

posted @ 2021-02-13 14:33  萝北北  阅读(50)  评论(0)    收藏  举报