1:赋值相关

  为变量进行赋值时是改变它的值,不改变它所指向的储存空间。

  而为对象进行赋值时是改变它所指向的存储空间。

    比如说如下代码:

 1 class Number{
 2     int i;    
 3 }
 4 public class Assignment{
 5     public static void main{String[] args){
 6         Number n1 = new Number();
 7         Number n2 = new Number();
 8         n1.i=10;
 9         n2.i=50;
10         n1=n2;
11         n1.i=30;
12         }
13 }   

 

    当new了两个类n1,n2时,两个分别指向不同的储存空间,此时它们是各自独立的,对其中之一进行赋值,另一个也不会受到影响。令n1=n2之后,便是将n2指向了n1所在的储存空间,此时该储存空间便有两个名字n1,n2。不管改变两者中任何一个实质上都是修改该储存空间中的值,在代码中也可看到n1.i=30之后若是输出n2.i,那么显示的值也是30。

   如果想要让n1,n2继续保持独立,仅仅是对其中的i值进行改变,那么可以将第十行的n1=n2修改为n1.i=n2.i,此时操作的就是两个变量,而不是两个类,那么n1n2也将继续保持独立

  所以在实际代码编写中如非必要尽量避免对类的直接赋值,这样会带来很多意想不到的错误。

  PS:由于脱胎于java,C#也具有以上类似的性质

 

 
 

posted on 2016-09-28 15:17  cramile  阅读(136)  评论(0)    收藏  举报

导航