Fork me on GitHub

java之扩展运算符

java中的扩展运算符为+=、-=、/=、%=、*=

当使用扩展运算符时,变量在参与赋值运算时会把结果自动强制转换为当前变量的类型,比如:

public class Test{
    public static void main(String[] args) {
        short a = 1;
        //此时的a是short类型
        a += 1;
        System.out.println(getType(a));
    }
    public static String getType(Object obj) {
        return obj.getClass().getName();
    }
}

输出:java.lang.Short

如果是正常的进行赋值的话,则需要进行强制转换:

public class Test{
    public static void main(String[] args) {
        short a = 1;
        //此时的a是short类型
        a = (short)(a + 1);
        System.out.println(getType(a));
    }
    public static String getType(Object obj) {
        return obj.getClass().getName();
    }
}

输出:java.lang.Short

思考以下代码的输出是什么?

public class Test{
    public static void main(String[] args) {
        int a = 1;
        a *= 0.1;
        System.out.println(a);
        int b = a++;
        System.out.println(a);
    }
}

分析:由于扩展运算符会将运算后的结果进行强制转换成原来变量的类型,所以a*=0.1中a的类型还是int,正好与后面声明的int b相对应,所以此时a=0。而int b = a++;a++是先赋值后运算,所以b的值是0,a的值变为1。

所以最后输出为:

0

1

0

posted @ 2019-12-13 16:48  西西嘛呦  阅读(828)  评论(0编辑  收藏  举报