java运算符和表达式
- 一、运算符
- 1、定义
- 2、算术运算符
- 3、赋值运算符:
- 4、关系(比较)运算符:
- 5、逻辑运算符:
- 6、位运算符
- 7、三目(三元)运算符:
- 8、运算符的优先级:
- 二、表达式
- 1.表达式
- 2. 语句
一、运算符
1、定义
都是Java内置的可以进行相应运算的符号,
其他包括算术运算符、赋值运算符、关系(比较)运算符、逻辑运算符、位运算、三目运算符。
2、算术运算符
如果两个元素的类型一致,结果类型也保持一致;
两个元素的数据类型不一致,结果的数据类型是大的数据类型
符号 | 内容 |
+ | 求和 |
- | 求差 |
* | 求积 |
/ | 求商 |
如果两个int类型作运算,除数为0;编译不会报错,但是运行会报异常 / by zero ,
如果浮点数,除数为0,编译 运行不会报错 结果为Infinity
符号 | 内容 |
% | 取余 模余 |
++ | 自增运算符 |
- - | 自减运算符 |
++步长为1,
让变量自增1;
符号可以放在变量左边,也可以放在变量右边;
如果++在变量右边,先使用变量当前的值参与运算,再让变量值增加1
如果++在变量左边,先让变量值增加1,再参与运算
--同理。
3、赋值运算符:
使用赋值运算符可以给变量赋值
符号 | 内容 |
= | 将右边的值赋值给左边的变量 |
+= | 将左侧变量的值和右侧的值求和 将结果再赋值给左侧变量 |
i+=2 | i = (数据类型)(i+2) 数据类型的强制转换 |
-= | 将左侧变量的值和右侧的值求差 将结果再赋值给左侧变量 |
*= | 将左侧变量的值和右侧的值求积 将结果再赋值给左侧变量 |
/= | 将左侧变量的值和右侧的值求商 将结果再赋值给左侧变量 |
%= | 将左侧变量的值和右侧的值取余 将结果再赋值给左侧变量 |
4、关系(比较)运算符:
符号 | 内容 |
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
== | 等于 |
!= | 不等于 |
最终运算结果必然为boolean类型
5、逻辑运算符:
只针对boolean类型的值作运算 true false;
逻辑运算符运算后的结果也必然为boolean类型
& 与 且 双目运算符::
左右两边都为true 结果为true;只要出现了false,结果就为false
| 或:
左右两边都为false,结果为false;只要有一边出现了true,结果就为true
! 非 单目运算符
!true=false !false=true
^ 异或
左右两边的值如果不相同,则结果为true
左右两边的值如果相同,则结果为false
&& 双与 短路与
如果&&左边为false,则符号右边不再执行
|| 双或 短路或
如果||左边为true,则结果必然为true;符号右边不再执行
优点:提高程序执行的效率
注意:
不管 & && 最终结果一定是一致的;&& ||不会改变结果,只是决定了符号右边的内容是否执行
6、位运算符
用来针对二进制进行运算符 ;
需要将要运算的数转为二进制的形式
&
根据每个二进制位进行运算
如果同一个二进制位上都为1 结果 1
如果同一个二进制位上都为0 结果0
|
根据每个二进制位进行运算
如果同一个二进制位上都为0 结果0
如果同一个二进制位上有一个为1 结果1
^
如果两个相同则为0
如果两个不同则为1
~ 单目运算符
原码 反码 补码(计算机底层真正使用保存和计算数据的)
正数:原码=反码=补码
负数:原码----------->反码----------->补码
除符号位,取反 +1
<<:
左移,针对二进制;
将二进制数整体向左移动相应的位数;左侧多出来的位数直接舍掉,后边空出来的位数补0
int a = 1;
a<<1 (a2^1)
a<<2 (a2^2)
a<<3 (a2^3)
a<<n (a2^n)>>:右移
-3>>1:
>>>:无符号右移
案例:2放大222 2<<3
位运算: java底层很多程序都是使用的位运算
真正项目开发中,位运算使用较少。
单目运算符:只针对一个元素进行运算 ++ – ! ~
双目运算符 : 针对两个元素进行运算
三目运算符: 针对三个元素进行运算
7、三目(三元)运算符:
格式:表达式 ? 表达式1 : 表达式2
表达式的结果为boolean true false
如果表达式的结果为true,则执行表达式1;
如果表达式的结果为true,则执行表达式2;
8、运算符的优先级:
二、表达式
1.表达式
主要由数值和运算符组成
a>b
a&b
a++
结尾不需要加分号
允许构建复杂的表达式 a++ + --a*2
2. 语句
一条语句代表一个完整的程序执行逻辑
每条语句后都会加一个;表示语句结束
一行可以写多条语句;但是为了增强可读性,尽量避免;
{}代表一个完整执行逻辑,后边可以不加; 也可以加分号
可以不写语句单独写分号 代表空语句