关于Java的学习 ->今天遇到的两个易错知识点
1)算术运算符中 ++
2)逻辑运算符中 短路与&& 逻辑与&
1.算术运算符中 ++
作为独立语言使用时:前++和后++都完全等价于i = i + 1
作为表达式中使用时:前++: ++先自增后赋值;后++: ++先赋值后自增
下面我们用个例子演示一下
public class Arithmetic{
public static void main(String[] args){
int i = 8;
int m = i++; //前++ (1)m=i;(2)i=i+1
int n = ++i; //后++ (1)i=i+1;(2)n=i
System.out.println("m="+m+"/t"+"n="+n); //8 9
}
}
这里有两道很有意思的面试题,值得你一看
// 题1
public class Arithmetic{
public static void main(String[], args){
int i = 1;
i = i ++; // (1)temp=i;(2)i=i+1=2;(3)i=temp
System.out.println(i); //1
}
}
// 题2
public class Arithmetic{
public static void main(String[], args){
int i = 1;
i = ++i; // (1)i=i+1=2;(2)temp=i;(3)i=temp
System.out.println(i); //2
}
}
2.赋值运算符
3.关系运算符(比较运算符)
4.逻辑运算符
(1)&&与&
&&短路与:如果第一个条件为false,则第二个条件不会判断,最后结果为false,效率高;在实际开发中,我们使用的基本都是短路与&&
&逻辑与:不管第一个条件是否为false,第二个条件都要判断,效率低。
为了进一步区分两者的差异;这里我用一行简短的代码演绎一下;
// 短路与&&
public class LogicOperator01{
public static void main(String[] args){
int a = 5;
int b = 20;
if (a > 10 && ++b < 50){
System.out.println("okk01");
}System.out.println("a="+a+"b="+b); // a=5; b=20
}
}
// 逻辑与&
public class LogicOperator01{
public static void main(String[] args){
int a = 5;
int b = 20;
if (a > 10 & ++b < 50){
System.out.println("okk01");
}System.out.println("a="+a+"b="+b); // a=5; b=21
}
}
(2)||与I
短路或||:如果第一个条件为true,则第二条件不会判断,最终结果为true;效率高,开发中偏爱用||
逻辑或|:不管第一个条件是否为true,第二个条件都要判断,效率低
其实这里的道理和上述相似,这里就不演示了。



