“值类型”和“引用类型”的区别是什么?

发布网友

我来回答

2个回答

懂视网

<script type="text/javascript">
var i = 1;
var j = 2;
var a = [1, 2];
function arr(b) {
 b[0] = 2;
}
function me(x, y) {
 x = x+y;
return x;
}
arr(a);
console.log(i); // 1
console.log(JSON.stringify(a)); // [2,2]
</script>

热心网友

1, 值类型保存的是具体的值。

例如
int a = 1;
int b = a;
b++;
这时b为2,a仍然是1

,2, 引用类型保存的是值的地址。

例如有个类型是 User
User u1 = new User(){ Name = "张三" };
User u2 = u1;
u2.Name = "李四";
这时 u2 和 u1 的名字都为李四,因为 u2=u1的时候,u1和u2将指向同一个内存中的地址。改变u2的等于改变了u1,

值类型(value type):byte,short,int,long,float,double,decimal,char,bool 和 struct 统称为值类型。值类型变量声明后,不管是否已经赋值,编译器为其分配内存。

引用类型(reference type):string 和 class统称为引用类型。当声明一个类时,只在栈中分配一小片内存用于容纳一个地址,而此时并没有为其分配堆上的内存空间。当使用 new 创建一个类的实例时,分配堆上的空间,并把堆上空间的地址保存到栈上分配的小片空间中。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com