值类型和引用类型概念梳理

一、值类型和引用类型:

a)         值类型:存储在堆栈中,包括 intfloatdemicalboolchar类型

b)         引用类型:存储在托管堆上,包括objectstring类型

                         i.              装箱boxing:值类型à object类型

1.         int i = 100; object x = i;             //隐式装箱

2.         int i = 100; object x = object(i); //显示装箱

                       ii.              拆箱unboxingobject类型à值类型

1.         int i = 100; object x = i; int j = (int)x; //显示,只可显示拆箱

                      iii.              string 特殊性:

1.         把一个字符串赋给另一个字符串时,会得到对内存中同一个字符串的两个引用。但是修改其中一个字符串,会创建一个全新的string对象,而另一个字符串没有改变。

例:String  s1 = “old string”;        ß托管堆分配string对象, s1指向它

         String  s2 = s1;                 ß添加指向刚分配的string对象的引用s2, s2 = “old string”

         s1 = “new string”;            ß更改s1的值,实际托管堆新建一个string对象,让s1改为指向它,s2不变,保持原有指向,  s2 = “old string”

posted @ 2010-06-10 11:25  Darren.Xiang  阅读(167)  评论(0编辑  收藏  举报