1.存储位置不一样
值类型存储在执行栈中,引用类型存储在堆中
值类型直接存储在执行栈中,存储的是真真正正的值
引用类型存储的是16进制的地址指针,具体数据存在堆中
2.复制/传值方式不一样
值类型直接赋值就是复制,引用类型的变量直接赋值实际上是传递引用,只是浅复制
值类型在复制/传值时,复制的是真真正正的值,一方改变不会对另一方产生影响。
就好比你从别人那里复印了一份资料,此时你们手里各有一份一模一样的资料,他修改他的你修改你的二者之间互不影响
引用类型在复制/传值时,复制的是16进制地址指针,一方改变另一方也会改变
就好比你交了个女朋友,此时你将你的银行卡密码给了她(给她的并不是卡而是可以消费的密码),此时你俩共用一张卡,任何一人消费或充值另一方都会收到消息
3.值类型无法添加属性和方法,引用类型可以添加属性和方法
4.值类型的比较是值的比较,只有当它们的值相等的时候它们才相等,引用类型是引用地址的比较
(比较的时候==是在比较的时候做了类型转换,而===是值和类型相等才能相等)
5.在函数中的使用
值类型的变量在函数中被修改时,只在函数作用域内部生效,函数被销毁后此次修改立即失效
而引用类型在函数中被修改时修改的是运行时数据区中的值,即使函数被销毁,变量的值依旧被改变。