【Java笔记】04 运算符
一、算数运算符
运算符:+(正号)、-(负号)、+、-、*、/、%、++、—、 +(字符串相加)
1./
System.out.println(10 / 4); //2
System.out.println(10.0 / 4); //2.5
double d = 10 / 4;//2.0
2.% 取模,取余
%运算, a % b = a - a / b b
10%3=1 //10-10/33=1
-10%3=-1 //(-10)-(-10)/33=-1
10%-3=1 //10-10/(-3)*(-3)=1
%运算,a是小数的情况下, a % b = a - (int)a / b b
-10.5%3 = -10.5 - (-10)/3*3 = -10.5+9=-1.5
3.++
- 作为独立语句
i++;//自增,等价于 i=i+1;
++i;//自增,等价于i=i+1; - 作为表达式使用
前++:i先自增,后赋值
后:i++先赋值,后自增
int i = 8;
int k = ++i;//i=i+1;k=i;
System.out.println("k=" + k + "i=" + i); //9 9
int j = 8;
int l = j++;//k=j;j=j+1;
System.out.println("j=" + j + "l=" +l); //8 9
int i = 1;//i->1
i = i++;//规定 使用临时变量:(1)temp=i;(2)i=i+1;(3)i=temp;
System.out.println(i); // 1
int i = 1;//i->1
i = ++i;//规定 使用临时变量:(1)i=i+1;(2)temp=i;(3)i=temp;
System.out.println(i); // 2
二、关系运算符(比较运算符)
结果都是boolean,即true或false
关系运算符组成的表达式,称为关系表达式 boolean = a > b;
1.== 相等
2.!= 不等
3.<
4.>
5.<=
6.>=
7.instance of 检查是否是类的对象
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
三、逻辑运算符
- a&b : & 叫逻辑与:规则:当 a 和 b 同时为 true ,则结果为 true, 否则为 false
- a&&b : && 叫短路与:规则:当 a 和 b 同时为 true ,则结果为 true,否则为 false
- &和&&的区别
1.&&短路与:如果第一个条件为false,则第二个条件不会判断,最终结果为false,效率高
2.&逻辑与:不管第一个条件是否为false,第二个条件都要判断,效率低
int a = 4;
int b = 9;
//对&&,如果第一个条件为false,后面的条件不再判断,即++b不执行
if(a < 1 && ++b < 50){
System.out.println("ok");
}
System.out.println("a=" + a + "b=" + b); //4 9
//对&,如果第一个条件为false,后面的条件判断,即++b执行
if(a < 1 & ++b < 50){
System.out.println("ok");
}
System.out.println("a=" + a + "b=" + b); //4 10
- a|b : | 叫逻辑或,规则:当 a 和 b ,有一个为 true ,则结果为 true,否则为 false
- a||b : || 叫短路或,规则:当 a 和 b ,有一个为 true ,则结果为 true,否则为 false
- |和||的区别
1.||短路或:如果第一个条件为true,后面条件不判断,最终结果为true
2.|逻辑或:如果第一个条件为true,后面条件判断,最终结果为true
- !a : 叫取反,或者非运算。当 a 为 true, 则结果为 false, 当 a 为 false 是,结果为 true
- a^b: 叫逻辑异或,当 a 和 b 不同时,则结果为 true, 否则为 false
int x = 5;
int y = 5;
//x++ == 6,后++,先比较后自增,比较5==6,false;x自增=6;
//++y == 6,先++,先自增后比较,y自增=6;比较6=6,true;
if(x++ == 6 & ++y == 6){
x=11;
}
System.out.println(x,y); // 6 6
四、赋值运算符
1.基本赋值运算符=
2.复合赋值运算符 +=,-=,/=,%=
复合赋值运算符会进行类型转换
byte b = 3;
b += 2; //等价于 b = (byte)(b + 2);
五、三元运算符
条件表达式?表达式1:表达式2;
表达式1和表达式2要为可以赋给接收变量的类型(或可以自动转换)
六、运算符优先级
. () {} ; , | |
---|---|
R->L | ++ — ~ ! |
L->R | * / + - |
L->R | + - |
L->R | << >> >>> 位移 |
L->R | < > <= >= instanceof |
L->R | == != |
L->R | & |
L->R | ^ |
L->R | | |
L->R | && |
L->R | || |
L->R | ? : |
R->L | = *= /= %= |
+= -= <<= >>= | |
>>>= &= ^= |= |
从上到下优先级降低