正在加载图片...
赋值 赋值用的是≡运算符。它的意思是“算出等号右边的值(通常称为 rvalue),然后拷贝到等号的左边(通常称为/aue)”。 rvalue可以是任 何常量,变量或者是能产生值的表达式,而laue则只能是一个明确 的,有名字的变量( named variable)。(也就是说,必须要有一个物理空 间来存储这个值。)比如,你可以将常量赋给变量 但是你不能将值赋给常量——也就是说,常量是不能当Ⅳ value的。(你不 能说4=a) 给 primitive赋值还是比较简单的。由于 primitive持有的是实实在在的 值,而不是指向对象的 reference,因此为 primitive赋值的时候,你是 将内容从一个地方直接拷贝到另一个地方。假设a和b都是 primitive, 如果你说a=b,那么b的内容会被拷贝到a。如果接下来你又修改了 a,那么很显然b是不会受到影响的。对于程序员来说,在绝大多数情况 下,这正是他们所需要的 但是,给对象赋值的时候,情况就有所不同了。只要你想操控对象,你就 得通过 reference来进行操作,所以当你“在对象之间”进行赋值的时 候,实际上你是在拷贝它的 reference。也就是说,如果c和d都是对 象,而你说c〓d,结果就成了c和d都指向原先只有d指着的那个对 象了。下面的例程演示了这种行为 // c03: Assignment. java // Assignment with objects is a bit tricky import com. bruceeckel. simpletest. class Number public class Assignment i static Test monitor new Test ( public static void main(String[] args) t Number nl= new Number(i Number n2 new Number()i System. out. println("l: nl. i:#+ nl.i+ sy n1.i=2 第3页共48页shhgs@wgqqh.com ￾ 3 ✁ ✂ 48 ✁  ~Lˆ( =  A(¹}Í!-S1(L(·U™ rvalue) |€g-S(‚1(·U™ lvalue)Ïrval ue ÝE^ ·ƒ „ƒ…š;J0L(hi´ àl val ue só;3×wx ( mц(„ƒ(n am ed variab l e)([$ ‡ˆ%m3×¢‰ 4QŠ‹ ×L)8Ä ¡ÝE·ƒ~¬„ƒ0 a = 4; ¡X;L~¬·ƒŒŒ[$ ·ƒX; l val ue ((¡X ;$ 4 = a; ) ¬ p rim itive ~L8)t(`) p rim itive gm(ññFF( L àXyŽ¥_( referen ce æò™ p rim itive ~L(M ¡ R3×rµÒ€g‘3×rµ’? a  b Æ p rim itive ÄÅ¡$ a=b YZ b (RºT€g aÄŐQ¡üïð, a YZŠ| b Xº•gŸ (¥)â%Q$ FÂV" GWDî%(  ¬¥_~L(M mDX‡,ó%¡|¥_ ¡ ‰^ referen ce Q(1 DE ¡ÍF¥_u4Ï(~L( M ñ™J¡F€A( referen ce[$ ÄÅ c  d Æ¥ _ à¡$ c = d OÅŽ, c  d ÆyŽå/óm d y.(Y×¥ _,¶(]⚛, †™0 //: c03:Assignment.java // Assignment with objects is a bit tricky. import com.bruceeckel.simpletest.*; class Number { int i; } public class Assignment { static Test monitor = new Test(); public static void main(String[] args) { Number n1 = new Number(); Number n2 = new Number(); n1.i = 9; n2.i = 47; System.out.println("1: n1.i: " + n1.i + ", n2.i: " + n2.i); n1 = n2; System.out.println("2: n1.i: " + n1.i + ", n2.i: " + n2.i); n1.i = 27;
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有