发布网友 发布时间:2022-04-24 18:09
共2个回答
懂视网 时间:2022-04-24 10:21
<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>
热心网友 时间:2022-04-24 07:29
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 创建一个类的实例时,分配堆上的空间,并把堆上空间的地址保存到栈上分配的小片空间中。