JavaSE:运算符 (学习笔记)

时间:2024-11-14 08:44:21

目录

一,算术运算符

 【1】 共同点:

  【2】 不同点:

二,关系运算符

三,逻辑运算符

2,&和&&的区别和联系   { |和||的区别和联系 }---两题类似

四,赋值运算符

五,拓展赋值运算符

六,条件运算符

七,位运算符

八,运算符的优先级

九,运算符总结表


一,算术运算符

                   +, -, *, /, %, ++(自增),--(自减)

  1.    + 的作用:(1)表示正数。(2)表示相加操作。(3)进行字符串的连接

  2.     :用来求余数。

  3.   /  : 表示两个数相除运算  

1,i++ 与 ++i 的异同之处   (i--和--i的异同之处)

 【1】 共同点:

                     1、i++和++i都是变量自增1,都等价于i=i+1

                     2、如果i++,++i是一条单独的语句,两者没有任何区别

                     3、i++和++i的使用仅仅针对变量。 5++和++5会报错,因为5不是变量。

  【2】 不同点:

                      如果i++,++i不是一条单独的语句,他们就有区别

                       i++ :先运算后增1。

                       ++i : 先增1后运算。

二,关系运算符

                         >, <, >=, <=, ==, !=

     1,关系运算符最终结果:要么是true,要么是false。

     2,使用关系运算符,可以获得boolean的结果。

三,逻辑运算符

                         &, |, &&, ||, !, ^

     1,运算符左右连接的都是  布尔类型的操作数,最终表达式的结果是布尔值:true或者false。

     2,逻辑与:   ——只要有一个操作数是false,那么结果一定是false。

     3,短路与:&&   ——效率高一些,只要第一个表达式是false,那么第二个表达式就不用计算 

                                        了,  结果一定是false。

     4,逻辑或:|       ——只要有一个操作数是true,那么结果一定是true。

     5,短路或:||      ——效率高一些,只要第一个表达式是true,那么第二个表达式就不用计算

                                        了,  结果一定是true。

     6,逻辑非:!      ——相反结果。

     7,逻辑异或:  ——两个操作数相同,结果为false,不相同,结果为true。

2,&和&&的区别和联系   { |和||的区别和联系 }---两题类似

         【1】联系

                       &和&&都可以用作逻辑与运算符,当运算符两边的表达式的结果或操作数都为true时,整个运算结果才为true,否则,只要有一方为false,结果都为false。

前提条件:两边的操作数或者表达式都是boolean类型

         【2】区别

                

                  1, &逻辑运算符称为 逻辑与运算符,&&逻辑运算符称为  短路与运算符

                         对于&:无论任何情况,&两边的操作数或表达式都会参与计算。

                         对于&&:当&&左边的操作数为false或左边表达式结果为false时,&&右边的操作数或表达式将不参与计算,此时最终结果都为false。

                       综上所述,如果逻辑与运算的第一个操作数是false或第一个表达式的结果为false时,对于第二个操作数或表达式是否进行运算,对最终的结果没有影响,结果肯定是false。推介平时多使用&&,因为它效率更高些。

                  2. &还可以用作位运算符。当&两边操作数或两边表达式的结果不是boolean类型时,&用于按位与运算符的操作。

四,赋值运算符

                          =

     1,的作用: 将等号右侧的值赋给等号左侧。

五,拓展赋值运算符

                          +=,-=, *=, /=

     1,a+=b 相当于 a=a+b,两者的区别是:

                                                        (1)a+=b   可读性稍差,编译效率高,底层自动进行类型转换。

                                                        (2)a=a+b   可读性好,编译效率低,手动进行类型转换   

     //请问 a+=b 相当于 a=a+b,那么 a+=b 也相当于 a=b+a 吗?

                  对于基本数据类型来说:没区别

                                      a:10      b:40 

                                         a=a+b                                   a=b+a 

                                           a=50                                     a=50

                  对于String类型来说:不一样   

                                      a:"u"      b:"x"

                                          a=a+b                                   a=b+a 

                                           a="ux"  (正着拼)                    a="xu" (倒着拼)

六,条件运算符

                          ? :

     1,又称:三元运算符 / 三目运算符

     2,格式:  a?b:c             [ 简写版if—else选择结构 ]   【注意: b 和c 必须是相同数据类型的】

                   其中a是一个布尔类型的表达式,返回结果要么是true要么是false。

                  通过a的结果决定 最终表达式的结果:

                                         如果a的结果是true,那么表达式最终结果为b;

                                          如果a的结果是false,那么表达式最终结果为c。

七,位运算符

                          &, |, ^, ~ ,  >>, <<, >>> (了解!!!)

     1,运算符左右连接的是具体的数值

     2,  按位与 & ;           按位或  ;           按位异或  ^ ;           取反  ~  

            左移运算符  >>:左移一位相当于乘2;           右移运算符  <<:右移一位相当于除2取离。

3,用最有效率的方法算出2乘以8等于多少

    使用位运算来实现效率最高。位运算符是对操作数以二进制比特位为单位进行操作和运算,操作数和结果都是整型数。对于位运算符“<<”, 是将一个数左移n位,就相当于乘以了2的n次方,那么,一个数乘以8只要将其左移3位即可,位运算cpu直接支持的,效率最高。所以,2乘以8等于几的最效率的方法是2 << 3。

八,运算符的优先级

                              单目  >  算术    >    关系    >    逻辑    >    三目(条件)   >   赋值

     1,实际开发中我们不会写特别复杂的表达式,你要想先算谁就用 ( ) 。

九,运算符总结表