关于自增运算符和逻辑运算符一些使用误区
自增运算符
总结
- 对于自增运算符本身变量来说,自增符号无论是在前还是后,其结果都是一样的在原有基础上增加后减少1;
- 对于赋值给其他变量来说,自增符号的前后是会导致结果的不同:
- 若形式是k=++i,则此时变量k的数值是变量i加过1后的数值,原则是:先增加后赋值,故变量k的值与i加1后的值一致;
- 若形式是k=i++,则此时变量K的数值是变量i没有加过1的数值,原则是:先赋值后增加,故此时变量k的数值是i原来的数值。
具体代码如下
自增符号在变量后面
int m=1;
int g=m++;
System.out.println("这个是自增符在变量后面"+g);
System.out.println("它本身的值是"+m);
运行结果:
自增符号在变量前面
int m=1;
int k=++m;
System.out.println("这个是自增符在变量前面"+k);
System.out.println("它本身的值是"+m);![在这里插入图片描述](https://img-blog.csdnimg.cn/2021010323415368.png#pic_center)
运行结果
位于运算与逻辑运算
总结
-
从布尔类型运算来看,二者结果运算均是false;
-
从运行机制来看,逻辑运算它参与程序的中断操作,而位于没有,具体如下:
- 表达式1 && 表达式2
- 按逻辑运算进行时,若表达式1是false,则表达式2不在进行;
- 按位运算进行时,虽然表达式1是false,但是程序仍然会对表达式2进行执行。
- 表达式1 && 表达式2
具体代码
逻辑运算
public class BitOperator{
public static void main(String [] args){
boolean bool;
int n=4,m=5;
// 此时为位运算,虽然bool这个已经是假命题,
bool = m<3 && m>n--;
System.out.println(n);// 此时n值为4
System.out.println(bool);
}
}
运行结果:
位运算
public class BitOperator{
public static void main(String [] args){
boolean bool;
int n=4,m=5;
bool = m<3 & m>n--;
System.out.println(n);// 此时n应该执行减一操作,即为3
System.out.println(bool);
}
}
运行结果: