运算符
1. 算术运算符
操作符 | 描述 |
---|---|
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 除法 |
% | 取余 |
++ | 自增 |
– | 自减 |
自增和自减
自增和自减比较特殊,表示自身的加减,是个一元运算符。
操作符 | 描述 |
---|---|
++ | 相当于 在原来的基础上 +1 (1++ == 1+1) |
– | 相当于 在原来的基础上 - 1(1-- == 1-1) |
自增
public class Demo05 {
public static void main(String[] args) {
int i = 1;
int i1 = ++i; // ++在i前
int i2 = i++; // ++在i后
System.out.println("输出i1的结果为:" + i1);
System.out.println("输出i2的结果为:" + i2);
}
}
输出结果:
输出i1的结果为:2
输出i2的结果为:2 //输出结果均为2?
个人理解原因是:
int i1 = ++i; // ++在i前
当 ++在i前 的时候先把值自增再赋值给变量
相当于 先算 再 赋值
int i2 = i++; // ++在i后
当 ++在i后 的时候先把值赋值给变量,然后再自增
相当于 先赋值 再 算 ,因为先赋值导致 i2 的值还是 2
自减
自减和自增差不多就不多赘述了
2. 关系运算符
运算符 | 描述 |
---|---|
< | 小于,判断左边值是否小于右边,小于为 true 反之false |
> | 大于,判断左边值是否大于右边,大于为 true 反之false |
<= | 小于等于,判断左边值是否小于等于右边,小于等于为 true 反之false |
>= | 大于等于,判断左边值是否大于等于右边,大于等于为 true 反之false |
== | 等于(注意等于是两个等于号),判断两边的值是否相等,相等为 true 反之 false |
!= | 不等于,判断两边的值是否不相等,不相等为 true 反之 false |
关系运算符输出值都为布尔值:true 和 false
3. 位运算符
没细看参考菜鸟教程做了个表,有空再来填坑
运算符 | 描述 |
---|---|
& | 如果相对应位都是1,则结果为1,否则为0 |
| | 如果相对应位都是 0,则结果为 0,否则为 1 |
^ | 如果相对应位值相同,则结果为0,否则为1 |
~ | 按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 |
<< | 按位左移运算符。左操作数按位左移右操作数指定的位数。(把原来的数乘2) |
>> | 按位右移运算符。左操作数按位右移右操作数指定的位数。(把原来的数除2) |
>>> | 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 |
4. 逻辑运算符
运算符 | 描述 |
---|---|
&& | 与(and)逻辑,同真为真 |
|| | 或(or)逻辑,同假为假 |
! | 非逻辑,取反 |
短路逻辑运算符
当运行与(&&)逻辑时两边同时为true时才为true,一旦有false出现,后面的操作就不再执行,直接输出false。
示例:
public class Demo02 {
public static void main(String[] args) {
int a = 2;
int b = 3;
boolean c = (a>2) && (++b>1); //Condition "(a>2)&&(++b>1)' is always 'false'
System.out.println("输出结果:"+c);
System.out.println("b的值为:"+b);
}
}
输出结果:false
b的值为:3 //在(a>2)时值为false,短路了,后面的++b就不再执行
5. 赋值运算符
运算符 | 描述 |
---|---|
= | 赋值,将右边的值赋给左边 |
+= | 加和赋值,把左边和右边的数相加赋值给 左边 |
-= | 减和赋值,把左边和右边的数相减赋值给 左边 |
*= | 乘和赋值,把左边和右边的数相乘赋值给 左边 |
/= | 除和赋值,把左边和右边的数相除赋值给 左边 |
%= | 取模和赋值,把左边和右边的数相取模后赋值给 左边 |
<<= | 左移位赋值运算符 |
>>= | 右移位赋值运算符 |
&= | 按位与赋值运算符 |
^= | 按位异或赋值操作符 |
|= | 按位或赋值操作符 |