算术运算符
Java支持所有基本的算术运算符:加,减,乘,除,求余,自加,自减等;
增量赋值运算符
+=
-=
*=
/=
%=
自增/自减运算符 ++ - -
public class Test{
public static void main(String[] args){
int numA = 10;
int numB = ++numA;
System.out.println("numB = ++numA: " + numB); //numB = ++numA: 11
numA = 10;
int numC = numA++;
System.out.println("numC = numA++: " + numC); //numC = numA++: 10
}
}
前置++和后置++的区别:
如果不取它们的返回值,二者没有任何区别。
如果取返回值,前置++返回的是自增后的值,后置++返回的是自增前的值。
Java中推荐使用后置++。
关系运算符
运算的结果为boolean类型 (true或fales)
等于 | == |
---|---|
不等于 | != |
大于 | > |
小于 | < |
大于等于 | >= |
小于等于 | <= |
取反 | ! |
逻辑运算符
逻辑与 | && |
---|---|
逻辑或 | || |
逻辑非 | ! |
短路求值:
当&&的左操作数为假的时候,右操作数就不会进行判断,整个表达式直接为假。
当||的左操作数为真的时候,右操作数就不会进行判断,整个表达式直接为真。
位运算符
Java中对数据的最小单位不是字节,而是二进制位。位运算符主要有四个:
按位与 | & |
---|---|
按位或 | | |
按位取反 | ~ |
按位异或 | ^ |
// & 按位将参与运算的数字转换为二级制数,相同位数进行与运算,全1为1,否则为0
System.out.println( 5 & 8); //结果为0
/*
*0101 5
*1000 8
*0000 0
*/
// | 将参与运算的数字转换为二级制数,相同位数进行或运算,有1则1,否则为0
System.out.println(19 | 10); //结果为27
/*
* 10011 19
* 01010 10
* 11011 27
*/
// ^ 将参与运算的数字转换为二级制数,相同位数进行异或运算,不同为1,否则为0
System.out.println(19 ^ 10);//结果为25
/*
* 10011 19
* 01010 10
* 11001 25
*/
移位运算符
只能进行整数运算,将符号左边的数转换为二级制数,移动符号右边的位数
int a = 10;
System.out.println(a >> 2 );
//1010 10
//0010 2
<< | 左移运算符(最左侧位不要了,最右侧补0) |
---|---|
>> | 算数右移(最右侧位不要了,最左侧补符号位(正数补0,负数补1)) |
>>> | 逻辑右移(最右侧位不要了,最左侧补0) |
①左移1位,相当于原数字 * 2。左移N位,相当于原数字 * 2的N次方。
②算数右移1位,相当于原数字 / 2。算数右移N位,相当于原数字 / 2的N次方。
条件运算符
表达式1 ? 表达式2 : 表达式3
//当表达式1的值为true时,整个表达式的值为表达式2的值;
//当表达式1的值为false时,整个表达式的值为表达式3的值