定义
赋值是用等号运算符(=)进行的。它的意思是“取得右边的值,把它复制到左边”。右边的值可以是任何常数、变量或者表达式,只要能产生一个值就行。但左边的值必须是一个明确的、已命名的变量。也就是说,它必须有一个物理性的空间来保存右边的值。举个例子来说,可将一个常数赋给一个变量(A=4;),但不可将任何东西赋给一个常数(比如不能4=A)。对主数据类型的赋值是非常直接的。由于主类型容纳了实际的值,而且并非指向一个对象的句柄,所以在为其赋值的时候,可将来自一个地方的内容复制到另一个地方。例如,假设为主类型使用“A=B”,那么B处的内容就复制到A。若接着又修改了A,那么B根本不会受这种修改的影响。作为一名程序员,这应成为自己的常识。但在为对象“赋值”的时候,情况却发生了变化。对一个对象进行操作时,我们真正操作的是它的句柄。所以倘若“从一个对象到另一个对象”赋值,实际就是将内存地址从一个地方复制到另一个地方。这意味着假若为对象使用“C=D”,那么C和D最终都会指向最初只有D才指向的那个对象。下面这个例子将向大家阐示这一点。
=简单的赋值运算符,将右操作数的值赋给左侧操作数C=A+B将把A +B得到的值赋给C+=加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数C+=A等价于C=C+A
-=减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 C-=A等价于C=C- A*=乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 C*=A等价于C=C*A/=除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数C/=A等价于C=C/A
(%)=取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 C%=A等价于C=C%A
<<=左移位赋值运算符C<<=2等价于
C=C<<2
>>=右移位赋值运算符 C>>=2等价于
C=C>>2
&=按位与赋值运算符C&=2等价于C=C&
=按位异或赋值操作符C^=2等价于C=CA2
public class Test
public static void main(String args[]) {int a = 10;
int b = 20;
int c= 0;
c=a+b;
System.out.println("c=a+b="+c);C+=a;
System.out.println("c+=a="+c);C=a;
System.out.println("c-=a="+c); c*=a;
System.out.println("c*=a="+c);
a=10;
c=15;
c/=a;
System.out.println("c/=a="+c);
a=10;
c=15;
C%=a:
System.out.println("c%=a="+c);c<<=2;
System.out.println("c<<=2="+c);C>>=2;
System.out.println("c>>=2="+c);C>>=2;
System.out.println("c>>=a="+c);c&=a;
System.out.println("c&=2="+c);c^=a;
System.out.println("c^=a ="+c); cl=a;
System.out.println("c|=a ="+c);
}
以上实例编译运行结果如下:
c=a+b=30
c+=a=40
c=a=30
c*=a=300
c/=a=1
C%=a=5
c <<=2=20
C>>=2=5
C>>=2=1
C&=a=0
c=a=10
c l=a =10