Java基础
运算符与表达式
表达式:由数据/变量/常量加上运算符组成的代码
表达式可以对数据进行指定的运算,表达式还会有一个结果
算术运算符
进行算术运算的符号
运算符 | 作用 | 示例 |
---|---|---|
+ | 1) 加法 2) 正号 3) 字符串拼接 | int a = 10 + 20; 对数值(除boolean)进行加法运算; int b = +20; String s = “java” + “good”; |
- | 1) 减法 2) 负号 | |
* | 乘法 | int a = 10 * 20; |
/ | 除法 | 整数相除, 结果还是整数(地板除) ;10 / 3 = 3; 整数与小数, 小数与小数相除, 结果都是小数 |
% | 求余, 求模, 取余 | 10 / 3 = 3 …… 1 10%3 = 1 对小数, 对负数都可以进行求余 10.1 / 3 = 3 ……1.1 10.1 % 3 = 1.1 |
++ | 整数自增1 | 前置 ++a: 先进行自增, 再把自增结果作为表达式的值。 后置 a++: 先计算表达式的值, 再进行自增 |
– | 整数自减1 |
比较运算符/关系运算符
运算符 | 作用 | 描述 |
---|---|---|
> | 左边表达是否大于右边的表达式 | A > B,A和B都应该是数值型,运算结果是布尔类型的值,表达式成立, 结果就是true ,表达式不成立, 结果就是false |
>= | ||
< | ||
<= | ||
== | A==B | 可以针对所有的类型,8种基本数据类型和3种引用类型, 比较是对象的地址是否相同。对象是否是同一个对象, 是不是同一个内存空间 |
!= | A!=B |
逻辑运算符
运算符 | 作用 | 描述 |
---|---|---|
&& & | 逻辑与 : A&&B, A和B的值都是true, 结果就是true, 否则就是false | 运算数据类型必须是布尔型的, 结果也是布尔型的 |
|| | | 逻辑或: A || B, A和B的值都是false,结果就是false, 否则就是true | |
! | 逻辑非: !A ,如果A的值是true, 结果为false, 否则就是true |
短路运算: 针对&&, ||这两个运算符
如果第一个表达式, 已经能够决定整个运算的结果, 第二个表达式将不会再执行.
A&&B, 如果A的值是false, B的值就不需要再进行执行了.
A||B, 如果A的值是true, B的值也不需要再执行了.
短路运算经常与自增/自减运算符同时考察
位运算符
位运算符是在二进制的基础上进行位运算
& | 按位与 | A&B A的对应位与B的对应位都是1时, 结果的对应位是1, 否则是0 二进制 1010 & 1100 1000 十进制 10 & 12 = 8 |
---|---|---|
| | 按位或 | A|B A的对应位与B的对应位都是0时, 结果的对应位是0, 否则就是1 1010 | 1100 = 1110 |
^ | 按位异或 | A^B A的对应位与B的对应位不相同, 结果的对应位是1 否则就是0 1010 ^ 1100 = 0110 |
~ | 按位取反 | ~A A的对应位是1, 结果的对应位就是0, 否则就是1 ~1010 = 0101 |
>> | 右移位 | A >> B, A在二进制的基础上, 向右移动B位, 左边空白位, 使用A的第一位补 1010 1100 >> 2 1110 1011 第一位是符号位, 移位完, 正数还是正数, 负数还是负数 0010 >> 1 0001 2 >> 1 = 1 |
<< | 左移位 | A<<B, A在二进制的基础上, 向左移动B位, 右边的空白使用0填充 1010 1100 << 2 1011 0000 每左移一位,就相当于乘2 0010 << 1 0100 2<<1 = 4 |
>>> | 无符号右移位 | A >> B, A在二进制的基础上, 向右移动B位, 左边空白位,使用0补 1010 1100 >> 2 0010 1011 |
赋值运算符
“= ”给变量/常量进行赋值操作
8种基本数据类型, 将具体的值保存到变量/常量所在的内存空间中.
3种引用类型, 将对象的地址保存到变量/常量所在的内存空间中.
两目运算符, 还可以与赋值运算符进行组合, 变成复合赋值运算符
+=, -=, *=, /=, &&=, ||=, &=, |=, ^=
A += B 相当于 A = A + B;
三目运算符
A ? B : C
-
首先计算表达式A的值, A必须是一个布尔值
-
如果A的值是true, 整个表达式的值就是B的值;如果A的值是false, 整个表达式的值就是C的值
-
B和C只会有一个执行.
运算符的优先级
参考百度百科:运算符的优先级顺序