运算符
运算符的种类
运算符是一种特殊的符号,用来表示数据的运算、赋值和比较等。
- 算术运算符
- 赋值运算符
- 比较运算符
- 逻辑运算符
- 位运算符
- 三元运算符
算术运算符
-
+,- (正负数)
-
+,- (加法,减法)
-
*,/ (乘法,除法)
-
% (取余)
-
++, --(前自增,前自减) 先增减,后赋值。 【注意,自增自减不会改变本身变量的数据类型】
-
++,–(后自增,后自减 ) 先赋值,后增减。【注意,自增自减不会改变本身变量的数据类型】
-
+, (连接符)
赋值运算符
= ,+=,-=,/=,%=(取余等于)
short num1+=10;(不会改变本身变量的数据类型)
num2%=6;
结果为:2
short
short num1+=10;(不会改变本身变量的数据类型)
注意:这种写法 num1+=10;(不会改变本身变量的数据类型),但是num1=num1+10会改变本身的数据类型migrate–>int
来看看代码:
int m=2,n=3;
n*=m++;
System.out.println(n);
System.out.println(m);
System.out.println("==============================================");
int a=10;
a+=(a++) + (++a);
System.out.println(a);
输出结果:n=6
m=3
a=32
int b = 1;
b*=0.1;
System.out.println(b);
b++;
System.out.println(b);
输出结果:0
1
比较运算符
==等于,!=不等于, <小于, >大于, <=小于等于, >=大于等于
注意:比较运算的结果都是boolean类型,也就是true或者false。比较运算符“==”不能误写成“=”。
int f1=5,f2=8;
System.out.println(f1>=f2);//false
System.out.println(f1<=f2);//true
boolean q=true,w=false;
System.out.println(q==w);//false
System.out.println(w=q);//true
逻辑运算符
int a=1;
if(a++==2){
System.out.println("我");
}
else{
System.out.println("你");
}
输出结果:你
System.out.println("=============================================");
int b=1;
if (++b==2){
System.out.println("我爱你");
}
else{
System.out.println("你爱我");
}
输出结果:我爱你
int x=1,y=1;
if(x++==1&&++y==1){
x=7;
}
System.out.println("x="+x+",y="+y);
输出结果:x=2,y=2
位运算符
int i=64;
i= i>>2;
System.out.println(i);
输出结果:16
int i=64;
i= i<<2;
System.out.println(i);
输出结果:256
1000 0100 补码
1000 0011 反码
1111 1100 原码 -124
1110 0001 补码
1110 0000 反码
1001 1111 原码 -31( -124 >>2 == -31)
1111 0000 补码
1110 1111 反码
1001 0000 原码 -16 (-124>>3== -16)
三元运算符
1, 条件表达式的结果为boolean类型;
2, 根据条件表达式的真假,执行表达式1还是表达式2;
- 如果表达式结果为true,则执行表达式1
- 如果表达式结果为false,则执行表达式2;
3, 表达式1和表达式2要求是一致的;
4, 三元运算符可以嵌套使用;
5, 凡是可以使用三元运算符的地方,都可以使用if-else,反之可能不成立!
6, 如果程序既能用三元,又能用if-else,那就用三元,因为三元效率高。
int a=10,b=20,c=30;
int max=(a>=b)? a:b;
int max1=(max>=c)? max:c;
System.out.println("max1="+max1);
输出结果:max1=30
double num1=5,num2=10,num3=20;
double max=(num1>num2)?num1:num2;
double max1=(max>num3)?max:num3;
System.out.println("最大值="+max1);
输出结果:最大值=20.0
不建议写下面这种,因为别人不容易看懂(我自己看了一分钟才看明白)
int x=50,y=60,z=40;
int max3=(((x>=y)? x:y)>=z)? ((x>=y)? x:y):z;
System.out.println("max3="+max3);
输出结果:max3=60
运算符的优先级
最简单一句话:你想让谁先执行,就给谁加()。