目录
1 算数运算符
1.1 基本四则运算符(+,-,*,/,%)
1.2增量赋值运算符(+=,-=,*,/=,%=)
1.3自增/自减运算符(++/--)
2关系运算符
3 逻辑运算符
3.1逻辑与&&
3.2逻辑或||
3.3 逻辑非!
3.4短路求值
4 位运算符
4.1按位与&
4.2按位或|
4.3按位取反~
4.4按位异或^
5 移位运算符
5.1左移运算符:<<
>"> 5.2右移运算符>>
>>">5.3无符号右移运算符>>>
5.4 总结
6 条件运算符
1 算数运算符
1.1 基本四则运算符(+,-,*,/,%)
a规则:同数学计算的方式一样,“/”略有不同。
b注意事项:
1:int/int的结果任为int.例如
public static void main(String[] args) {
int a=10;
int b=3;
System.out.println(a/b);
}
2:0不能作为除数,例如
public static void main(String[] args) {
int a=10;
int b=0;
System.out.println(a/b);
}
3:"%"表示求余数 ,"%"既可以对int 进行求余数也可以对double求余数。例如
public static void main(String[] args) {
int a=10;
int b=3;
double c=11.5;
double d=2.0;
System.out.println(a%b);
System.out.println(c%d);
}
1.2增量赋值运算符(+=,-=,*,/=,%=)
1:运算规则
a+=b相当于a=a+b;
a-=b相当于a=a-b;
a*b=b相当于a=a*b;
a/=b相当于a=a/b;
a%=b相当于a=a%b;
2示例代码
public static void main(String[] args) {
int a=10;
int b=3;
System.out.println(a+=b);//a=a+b=10+3=13
System.out.println(a-=b);//a=a-b=13-3=10
System.out.println(a*=b);//a=a*b=10*3=30
System.out.println(a/=b);//a=a/b=30/3=10
System.out.println(a%=b);//a=a%b=10%3=1
}
1.3自增/自减运算符(++/--)
1:运算规则
a++相当于a=a+1;
a--相当于a=a-1;
2: 示例代码
public static void main(String[] args) {
int a=10;
int b=3;
a++;
b--;
System.out.println(a);
System.out.println(b);
}
3:注意事项
1. 如果不取自增运算的表达式的返回值, 则前置自增和后置自增没有区别.
2. 如果取表达式的返回值 , 则前置自增的返回值是自增之后的值 , 后置自增的返回值是自增之前的值 .2关系运算符
关系运算符主要有六个
==,!= ,<,>,<=,>=
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println(a == b);
System.out.println(a != b);
System.out.println(a < b);
System.out.println(a > b);
System.out.println(a <= b);
System.out.println(a >= b);
}
关系运算符的返回值都是boolean类型
3 逻辑运算符
逻辑运算符主要有三个 &&,||,!
逻辑运算符的操作数一般为关系运算符计算的结果,返回值都是boolea类型
3.1逻辑与&&
1:运算规则
两个操作数都为true则结果为true,否则结果为false
2:示例代码
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 30;
System.out.println(a < b && b < c);
}
3.2逻辑或||
1:运算规则
两个操作数一个都为false则结果为false,否则结果为true。
2:示例代码
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 30;
System.out.println(a < b || b > c);
}
3.3 逻辑非!
1:运算规则
只有一个操作数,当操作数为true的时结果为false,当操作数为false时结果为true
2:示例代码
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 30;
System.out.println(!(a < b || b > c));
}
3.4短路求值
&&和||遵循短路运算规则
public static void main(String[] args) {
System.out.println(10 > 20 && 10 / 0 == 0); // 打印 false
System.out.println(10 < 20 || 10 / 0 == 0); // 打印 true
}
我们知道当0作为除数时,程序就会抛出异常,而此时代码编译没有任何问题,就说明“10/0”并没有进行运算。
结论:
1:&&当第一个操作数的值是false时,直接得出结果,不会去计算第二个操作数。
2:|| 当第一个 操作数的值是true时,直接得出结果,不会计算第二个操作数。
4 位运算符
位运算符主要有四个:&,|,~,^.
位运算表示按二进制位进行运算。计算机中表示数据的是一段二进制序列,位运算就是对每一个额二进制位进行运算。
4.1按位与&
1:运算规则:
如果两个二进制位都是1,则结果是1,否则,结果为0。
2:示例代码:
public static void main(String[] args) {
int a=10;
int b=20;
System.out.println(a&b);
}
4.2按位或|
1:运算规则
如果两个二进制位都是0,则结果为0,否则结果为1
2:示例代码
public static void main(String[] args) {
int a=10;
int b=20;
System.out.println(a|b);
}
4.3按位取反~
1:运算规则
对应的二进制位取反,若二进制是1,则结果是0,若二进制位是0.则结果是1
2:示例代码
public class TestDom {
public static void main(String[] args) {
int a=10;
System.out.println(~a);
}
4.4按位异或^
1:运算规则
二进制位相同为0,不同为1
2:示例代码
public static void main(String[] args) {
int a=10;
int b=20;
System.out.println(a^b);
}
5 移位运算符
移位运算符有三种
<< ,>>,>>>
5.1左移运算符:<<
1:运算规则:
最左侧舍弃,右侧补0
2:示例代码:
public static void main(String[] args) {
int a=10;
a=a<<1;
System.out.println(a);
}
5.2右移运算符>>
1:运算规则
右侧舍弃,左侧补符号位(正数补0,负数补1
2:示例代码
public static void main(String[] args) {
int a=10;
a=a>>1;
System.out.println(a);
}
5.3无符号右移运算符>>>
1:运算规则:
右边舍弃,左边补0
2:示例代码
public static void main(String[] args) {
int a=10;
a=a>>>1;
System.out.println(a);
}
5.4 总结
1.
左移
1
位
,
相当于原数字
* 2.
左移
N
位
,
相当于原数字
* 2
的
N
次方
.
2.
右移
1
位
,
相当于原数字
/ 2.
右移
N
位
,
相当于原数字
/ 2
的
N
次方
.
3.
由于计算机计算移位效率高于计算乘除
,
当某个代码正好乘除
2
的N次方的时候可以用移位运算代替.
4.移动负数或者移动位数过大都没有意义
6 条件运算符
条件运算符只有一个
表达式1?表达式2:表达式3
1:运算规则
当表达式的值为true时整个表达式的在值为表达式2,当表达式1的值为false时,整个表达式的值为表达式3.
2:示例代码
public static void main(String[] args) {
int a=10;
int b=20;
int max=a>b?a:b;
System.out.println(max);
}



