值类型和引用类型的区别

1.值类型和引用类型:

摘要:.net和Java这一类的高级语言封装性都比较好,很多底层的东西没办法直接看到,就像今天要介绍的值类型和引用类型一样!只有清楚其底层的实现才能深入的进行使用,下面就开始对值类型和引用类型的分析。

一.先看一道例题:

运行的结果如下:

结果1       1000
结果2       1000
结果3:      20
结果4:      200
分析:根据引用类型特点,str1和str2应该都是“abc”,为什么结果是这样的呢?
解释:通过ReferenceEquals()方法可以知道,str1和str2内存地址不同,而str3和str4内存地址相同;可以判定不同的String,相同的值,其引用地址相同,如果赋值为同一个值,在内存中只有一个字符串存在,两个引用的地址相同。由此引出String的不变性。——通俗解释就是给变量赋值时,如果这个值前面出现过,就直接把那个值的地址赋给这个变量。
 
三.简单谈谈浅拷贝和深拷贝:

简单来看看浅拷贝和深拷贝的定义

浅拷贝:只复制一个对象,对象内部存在的指向其他对象数组或者引用则不复制

深拷贝:对象,对象内部的引用均复制

关于浅拷贝和深拷贝具体的区别可以参考  “具体区别

原文地址:https://www.cnblogs.com/fengxuehuanlin/p/4557621.html