赋值运算符
= , +=, -=, *=, /=, %=
运算符
运算
范例
结果
=
赋值
a=3,b=2
a=3,b=2
+=
加等于
a=3,b=3;a+=b;
a=5,b=2;
-=
减等于
a=3,b=2,a-=b;
a=1,b=2;
*=
乘等于
a=3,b=2,a*=b;
a=6,b=2
/=
除等于
a=3,b=2,a/=b;
a=1,b=2;
%=
模等于
a=3,b=2,a%=b;
a=1,b=2
a+=b 可以想象成 a=a+b;
变量声明完了之后,可以使用赋值语句(assignment statement)给变量赋一个值,Java中使用等号(=)作为基本的赋值运算符(assignment operator),
格式如下:
variable = expression;
变量 = 表达式;
变量我们已经知道如何声明,表达式具体如何定义?
表达式的定义:
表达式涉及到值(常量),变量和通过运算符计算出的值,以及他们组合在一起计算出的新值。
x =y+1;
public static voidmain(String[] args) {
int x = 1; // 声明int变量x, 赋值1给变量x
int y = 0; // 声明int变量y, 赋值0给变量y
double area; // 声明double变量area
double radius = 1.0; // 声明double变量radius,并赋值1.0给变量radius
x = 5 * (3 / 2) + 3 * 2; // 将=右半部分表达式的计算结果赋值给变量x
x = y + 1; // 将变量y和1的求和的值赋值给变量x
area = radius * radius * 3.14159; // 将计算面积的值赋值给变量area
}
赋值运算符小问题
问题1:
intx;
System.out.println(x = 1);
如何理解?答:等价于
x=1;
System.out.println(x);
注意:不能 1=x,变量名必须在赋值运算符的左边。
问题二:
intx;
inty;
intz;
x = y = z = 100;
如何理解?
答:等价于
intx;
inty;
intz;
z = 100;
y =z;
x = y;
问题三:
short s1 = 1;
s1= s1+1;
s1+=1;
问:s1= s1+1; s1+=1; 与有什么不同?
对于short s1 = 1; s1 = s1 + 1; 由于s1+1运算时会自动提升表达式的类型,所以结果是int型,再赋值给short类型s1时,编译器将报告需要强制转换类型的错误。
对于short s1 = 1; s1 += 1;由于 += 是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。