运算符
1.算术运算符 :+ - * / %
代码如下:
public class TestDemo {
public static void main(String[] args) {
int a=5;
int b=2;
System.out.println(a+b);//加法运算符结果是7
System.out.println(a-b);//减法运算符结果是3
System.out.println(a*b);//乘法运算符结果是10
System.out.println(a/b);//除法运算符结果是2
System.out.println(a%b);//求余运算符结果是1
}
}
注:0不能作为除数!
public class TestDemo {
public static void main(String[] args) {
int a = 5;
int b = 0;
System.out.println(a/b);
}
}
会抛出0不能作为除数的异常!
2.增量运算符:+= -= *= /= %=
public class TestDemo {
public static void main(String[] args) {
int a = 5;
a+=1;//等价于a=a+1;此时a=6;
System.out.println(a);//6
a-=1;//等价于a=a-1;上次执行完a+=1时a已经变成了6,这时执行a-=1 a变成了5
System.out.println(a);//5
a*=2;//等价于a=a*2 此时a=10;
System.out.println(a);//10
a/=2;//等价于a=a/2;此时a=5;
System.out.println(a);//5
a%=2;//等价于a=a%2;此时a=1
System.out.println(a);//1
}
}
3.自增 自减运算符 前缀++ 后缀++ 前缀-- 后缀–
public class TestDemo {
public static void main(String[] args) {
int a=1;
int b=a++;//等价于b=a a=a+1此时b=1 a=2;
System.out.println(b);//1
System.out.println(a);//2
b=++a;//等价于a=a+1 b=a 此时a=3 b=3;
System.out.println(b);//3
System.out.println(a);//3
b=a–;//等价于b=a a=a-1 此时b=3 a=2;
System.out.println(b);//3
System.out.println(a);//2
b=–a;//等价于a=a-1 b=a 此时a=1 b=1
System.out.println(b);//1
System.out.println(a);//
}
}
4.逻辑运算符:&&(与) ||(或) !(非)
逻辑运算符的操作数(操作数往往是关系运算符的结果)和返回值都是 boolean 也就是说 只有2值 true 或 false
public class TestDemo {
public static void main(String[] args) {
int a = 10;
int b =5;
int c =6;
System.out.println(a>b&&a>c);//T
System.out.println(a>b||a>c);//T
System.out.println(a!=b);//T
System.out.println();
System.out.println(a<b&&a>c);//F短路求值,&&运算符中一假为假!
System.out.println(a<b||a>c);//T 或运算符中一真为真!
}
}
短路求值!
结论: 1. 对于 && , 如果左侧表达式值为 比特科技 false, 则表达式的整体的值一定是 false, 无需计算右侧表达式
- 对于 ||, 如果左侧表达式值为 true, 则表达式的整体的值一定是 true, 无需计算右侧表达式.
5.位运算符
&(按位与) |(按位或) ~(按位取反) ^(按位异或)
位指二进制位
public class TestDemo {
public static void main(String[] args) {
int a=3;
int b=4;
System.out.println(a&b);//0
System.out.println(a|b);//7
System.out.println(a^b);//7
System.out.println(~a);//-4
}
}
我们来看 a和b的二进制表示
以上4张图是为什么得到这个答案的分析过程。
6.移位运算符
(右移):最右位不要了,正数最左侧补0,负数补1
<<(左移):最左侧位不要了,最右侧补0
(无符号右移):最右侧不要了,最左侧补0
注:>>运算符 相当于除以2 右移n位 相当于除以2的n次方
<<运算符 相当于 乘2 左移n位 相当于乘2的n次方
7.条件运算符
格式:
表达式1?表达式2:表达式3
比如:
public class TestDemo {
public static void main(String[] args) {
int a = 10;
int b = 2;
int c=a>b?a:b;
System.out.println©;
}
}
答案毫无疑问是10,这是在求2个数的较大值。也就是说表达式1成立执行表达式2,表达式1不成立执行表达式3!