关于java种的赋值类运算符:
基本的赋值运算符:
=
扩展的赋值运算符:
+=
-=
*=
/=
%=
1.赋值类的运算符优先级:先执行等号右边的表达式,将执行结果赋值给左边的变量。
2.注意一下代码:
byte i = 10;
i += 5;等同于:i = (byte)(i + 5);
int k = 10;
k += 10;等同于:k = (int)(k + 5);
long x = 10L;
int y = 20;
y += x;等同于:y = (int)(y + x);
3.重要结论:扩展类的赋值运算符不改变运算结果类型,假设最初这个变量的类型是byte了类型,无论怎么进行追加或追减,最终该变量的数据类型还是byte类型。
代码演示:
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);//20
i -= 5;//等同于:i = i - 5;
System.out.println(i);//15
i *= 2;//等同于:i = i * 2;
System.out.println(i);
i /= 2;//等同于:i = i / 2;
System.out.println(i);//7
i %= 2;//等同于:i = i % 2;
System.out.println(i);//1
//-------------------------------------------------------------------------------
//10没有超出byte取值范围,可以直接赋值
byte b = 10;
//b=15;//可以,编译通过,15没有超出byte取值范围
//编译错误,为什么?
//编译器只检查语法,不运行程序,编译器发现b+5的类型是int类型,b变量的数据是byte
//大容量向小容量转换需要加强制类型转换符,所以以下程序编译报错。
//b = b + 5;
//纠正错误
b = (byte) (b + 5);
System.out.println(b);//15
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【损失精度】
z += 10000;//等同于:z = (byte)(z+10000)
System.out.println(z);//-112
}
}
资料来源:
【Java零基础教程视频(适合Java 0基础,Java初学入门)】 https://www.bilibili.com/video/BV1Rx411876f/?p=49&share_source=copy_web&vd_source=9bce191eb50f06ae83cb422d8b7f8f31