javase基础03-运算符

运算符是用来计算数据的符号。数据可以是常量,也可以是变量。被运算符操作的数我们称为操作数。

1.算术运算符

算术运算符最常见的操作就是将操作数参与数学计算,

+,-,*,/,%,++,--

+的用法

a:加法
b:正号
c:字符串连接符

/和%的区别

数据做除法操作的时候,/取得是商,%取得是余数

++和--的用法

a:他们的作用是自增或者自减
b:使用

单独使用

放在操作数据的前面和后面效果一样。
a++或者++a效果一样。

参与操作使用

放在操作数的前面:先自增或者自减,再参与操作

int a = 10;
int b = ++a;

放在操作数的后面:先参与操作,再自增或者自减

int a = 10;
int b = a++;

注意:

  1. 加法运算符在连接字符串时要注意,只有直接与字符串相加才会转成字符串。
  2. 除法“/”当两边为整数时,取整数部分,舍余数。当其中一边为浮点型时,按正常规则相除。
  3. “%”为整除取余符号,小数取余没有意义。结果符号与被取余符号相同。
  4. 整数做被除数,0不能做除数,否则报错。

2.赋值运算符

赋值运算符就是为变量赋值的符号

A:=,+=,-=,*=,/=,%=等

B:=叫做赋值运算符,也是最基本的赋值运算符

    int x = 10; 把10赋值给int类型的变量x。
C:扩展的赋值运算符的特点:
隐含了自动强制转换。

注意:赋值运算符左边必须是变量

面试题:

short s = 1;
s = s + 1;

short s = 1;
s += 1;
请问上面的代码哪个有问题?

3.比较运算符

比较运算符,又叫关系运算符,它是用来判断两个操作数的大小关系及是否相等关系的,结果是布尔值true或者false。

A:==,!=,>,>=,<,<=
B:无论运算符两端简单还是复杂最终结果是boolean类型。
C:千万不要把==写成了=

4.逻辑运算符(条件运算符)

逻辑运算符,它是用于布尔值进行运算的,运算的最终结果为布尔值true或false。

A:&,|,^,!,&&,||
B:逻辑运算符用于连接boolean类型的式子
C:结论
    &:有false则false
    |:有true则true
    ^:相同则false,不同则true。
        情侣关系。
    !:非true则false,非false则true
    
    &&:结果和&是一样的,只不过有短路效果。左边是false,右边不执行。
    ||:结果和|是一样的,只不过有短路效果。左边是true,右边不执行。

5.三元运算符

A:格式

比较表达式?表达式1:表达式2;

B:执行流程:

首先计算比较表达式的值,看是true还是false。
如果是true,表达式1就是结果。
如果是false,表达式2就是结果。

C:案例:

a:比较两个数据是否相等
b:获取两个数据中的最大值
c:获取三个数据中的最大值

6.位运算符

按位异或 ^

           仅当两个操作数不同一时候。输出结果才为1,否则为0.

12 的二进制为 1100
5   的二进制为 0101
则 12 | 5 的二进制为 1001。则完整的运算式为 12 & 5 = 9

A:^的特殊用法

            一个数据针对另一个数据位异或两次,该数不变

B:面试题

a:请实现两个变量的交换
    **采用第三方变量
    **用位异或运算符
        左边a,b,a
        右边a^b
b:请用最有效率的方式计算出2乘以8的结果
    2<<3

按位或 |

按位与 &

按位非~(按位取反)

         ~的作用是各位数字取反

注意:

        位运算符操作的都是数值的二进制补码,数字的真正值都需要转为原码.

移位运算符

<<
左边数据×2的移动次幂;
空位补零,移除的最高位丢弃;

>>
左边数据÷2的移动次幂
右移时,符号位将随同移动,为正时,最高位为0,补0;为负时,最高位为1,最高位补1

>>>
无论最高位是0,还是1,左边移空的都补零;

7.运算符优先级

优先级 描述 运算符
1 括号 ()、[]
2 正负号 +、-
3 自增自减,非 ++、--、!
4 乘除,取余 *、/、%
5 加减 +、-
6 移位运算 <<、>>、>>>
7 大小关系 >、>=、<、<=
8 相等关系 ==、!=
9 按位与 &
10 按位异或 ^
11 按位或 |
12 逻辑与 &&
13 逻辑或 ||
14 条件运算 ?:
15 赋值运算 =、+=、-=、*=、/=、%=
16 位赋值运算 &=、|=、<<=、>>=、>>>=

在开发过程中一般使用()来区别,运算优先级.

你可能感兴趣的:(javase基础03-运算符)