赋值运算符
作用:将常量、变量或表达式的值赋给某一个变量。
种类:
运算符 | 运算 | 范例 | 结果 |
= | 赋值 | a=3;b=2; | a=3; b=2; |
+= | 加等于 | a=3;b=2; a+=b; | a=a+b=5; b=2; |
-= | 减等于 | a=3;b=2; a-=b; | a=a-b=1; b=2; |
*= | 乘等于 | a=3;b=2; a*=b; | a=a*b=6; b=2; |
/= | 除等于 | a=3;b=2; a/=b; | a=a/b=1; b=2; |
%= | 模等于 | a=3;b=2; a%=b; | a=a%b=1; b=2; |
目录
-
赋值(=)
在赋值过程中,运算顺序从右往左,将右边表达式的结果赋值给左边的变量。
练习:
public class TestOpe07{ public static void main(String[] args){ //任意给出两个数,交换两个数并输出 //给出两个数 int a=5; int b=10; //输出交换前的两个数 System.out.println("交换前:"+a+"\t"+b); //交换 int t; //引入一个中间变量 t=a; a=b; b=t; //输出交换后的两个数 System.out.println("交换后:"+a+"\t"+b); } }
运行结果:
-
拓展赋值运算符
在为变量赋值时,当两种数据类型彼此不兼容,或者目标数据类型取值范围小于源类型时,需要进行强制数据类型转换。然而在使用+=、-=、* =、/=、%=运算符进行赋值时,强制类型转换会自动完成,程序不需要做任何显式地声明。例如:
public class TestOpe08{ public static void main(String[] args){ short s=3; int i=5; s+=i; //相当于s=(short)(s+i) System.out.println("s="+s); } }
运行结果:
注1:a+=b 和 a=a+b 区别:
a+=b 可读性稍差 编译效率高 底层自动进行类型转换
a=a+b 可读性好 编译效率低 手动进行类型转换
-
面试题
(1)请问a+=b相当于a=a+b,那么也相当于 a=b+a吗?
对于基本数据类型来说一样。例如:
a=10;b=20;
a=a+b=30
a=b+a=30
对于String类型来说不一样。例如:
a='x';b='u';
a=a+b="xu"
a=b+a="ux"
(2)下面代码哪一句出错了:
byte a = 10;
int b = 20;
a+=b;
a = a+b ; //更正为a=(byte)(a+b);
-
易错:
在Java中可以通过一条赋值语句对多个变量进行赋值,具体示例如下:
int x,y,z;
x=y=z=5;
需要特别注意的是,下面的这种写法在Java中是不可以的。
int x=y=z=5; //这样写是错误的