运算符

常见的运算符如下所示:

其中,逻辑运算符:

//举例逻辑与&
public
class java01 { public static void main(String[] args) { int a = 99; int b = 100; System.out.println(a > b & a > b++); System.out.println(b); } }
结果:false
   101

以上程序的运行结果是101,说明b++已经执行了。

对于逻辑与&来说,无论左边表达式是true还是false,右边表达式一定会执行。 

 -------------------------------------------------

//举例短路与&&
public
class java01 { public static void main(String[] args) { int k = 99; int f = 100; System.out.println(k > f && k > f++); System.out.println(f); }
}
结果:false
   100

测试得出f++并没有执行,因为左边表达式(k > f)为false,右边表达式就不再执行了,短路现象。

对于短路与&&来说,左边表达式为false,就会发生短路,右边表达式不再执行。

 --------------------------------

//举例逻辑或|
public
class java01 { public static void main(String[] args) { int a = 5; System.out.println(a > 2 | (a=a+2)>5); System.out.println("a="+a); } }
结果:true
   a=7
左边表达式(a>2)为true时,右边表达式也会执行。
对于逻辑或|来说,无论左边表达式是true还是false,右边表达式一定会执行。

 -----------------------------------

//举例短路或||
public class java01 {
    public static void main(String[] args) {
        int b = 5;
        System.out.println(b > 2 || (b=b+2)>5);
        System.out.println("b="+b);
    }
}
结果:true
   b=5

测试得出b=b+2并没有执行,因为左边表达式(b > 2)为true,右边表达式就不再执行了,短路现象。

对于短路或||来说,左边表达式为false,就会发生短路,右边表达式不再执行。

扩展类的赋值运算符:(+=、-=、*=、/=、%=)

 举例:x += 1 和x = x + 1的区别

byte b = 10;
b = b+1;//编译报错

编译没有通过的原因:b 是byte类型,1 是int类型,根据类型转换规则得知:

byte和int混合运算最后结果是int类型,int类型的值无法直接赋值给byte类型的变量b,所以编译报错。

继续测试:

byte b = 10;
b += 1;//编译运行成功,结果b=11

实际上java对于扩展类的赋值运算符进行了特殊的处理,所有的扩展赋值运算符,最终都不会改变运算的结果类型,

假设前面的变量是byte类型,那么后面的表达式运算之后的结果还是byte 类型。

所以实际上b += 1等同于:byte b = (byte)(b+1);

 

posted @ 2022-02-10 00:06  鹿先森JIAN  阅读(58)  评论(0编辑  收藏  举报