Java 运算符 Part03 赋值类运算符

/*
运算符【剩下的运算符】
    * 赋值运算符
    * 字符串连接运算符
    * 三目运算符/三元运算符/条件运算符

    关于java中的赋值类运算符
        * 基本的赋值运算符
            =

        * 拓展的赋值运算符
            +=
            -=
            /=
            *=
            %=

    1、赋值类运算符优先级:先执行等号右边的表达式,再将结果赋值给左边的变量

    2、注意以下代码:

        byte i = 5;
        i += 5; // 等同于 i = (byte)(i + 5);

        int j = 6;
        j += 6; // 等同于 j = (int)(j + 6);

        long x = 10L;
        int y = 20;
        y += x; //等同于 y = (int)(x + y);

    3、拓展类赋值运算符不改变运算结果的类型,无论怎么追加或追减都会是原先声明的类型。



*/

public class OperatorTest03{
    public static void main(String[] args){

        //基本的赋值运算符
        int i = 10;
        System.out.println(i);//10
        i = i + 5;
        System.out.println(i);//15

        //扩展的赋值运算符

        i += 5;//等同于:i = i+5;【+= 运算符可以翻译为“追加/累加”】
        System.out.println(i);

        i -= 5;//等同于:i = i - 5;
        System.out.println(i);//15

        i *= 2;//等同于:i = i * 2;
        System.out.println(i);//30

        i /= 4;//等同于: i = i / 4;
        System.out.println(i);//7

        i %= 2;//等同于:i = i % 2;
        System.out.println(i);//1

        //-----------------------------------------

        //10没有超出byte取值范围,可以直接赋值
        byte b = 10;

        //编译报错,为什么?
        //编译器只检查语法,不运行程序,编译器发现b+5是int类型,b变量是byte
        //大容量转小容量需要加强制类型转换符,所以以下程序报错
        //b = b + 5;
        
        //纠正错误
        b = (byte)(b + 5);
        System.out.println(b);

        //编译通过
        byte x = 10;
        x += 5;//等同于x = (byte)(x + 5),其实并不等同于 x = x + 5;
        System.out.println(x);

        byte z = 0;
        z += 128; //等同于 z = (byte)(z + 128);
        System.out.println(z);//-128【损失精度】
    } 
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容