在之前的文章中,竹迩给大家介绍了变量的概念;
变量是一个容器;
容器有各种类型--变量类型;
拿出一种类型的容器后可以给它起一个名字--x;
在容器里面装上数据--变量值;
变量的定义:类型 变量名 = 变量值
而前面刚分享完的对象,也是一种变量,叫做引用变量;
对象的定义:类名 对象名 = new 类名()
类本来就是指一种类型:女朋友类型,一个类可以有多个对象:小红,小黑,小萌;
类--变量类型
对象名--变量名
对象--值
所以对象其实是一种特殊的变量,因为这种变量的类型不是int,boolean这种基本数据类型,而是类类型;对象就被叫做引用类型变量;
SO既然基本类型变量和类的对象都是变量,变量又是一种容器,那基本类型变量和引用类型变量的容器有什么区别呢?
Java内存是一个空间的概念,我们创建的变量容器放在内存空间中;
如下图所示,我们创建的基本类型变量就是一个一个的盒子容器,每创建一个变量,就产生一个容器盒子被放入Java内存里;是不是很有酷炫的三维立体感;
而引用类型变量就要复杂得多;Java内存这个大空间被分为了很多房间,其中有两个是跟引用类型变量相关的:堆空间和栈空间
请原谅我的审美能力和美术功底,堆空间和栈空间竹迩就只能用简化图来表示了;
基本数据类型:一个简单容器被放在栈空间;
引用类型:要占据栈和堆空间
如图所示,当创建基本类变量的时候,容器产生,且容器被放在栈里;
创建引用变量时,引用和变量的内容本身是分开的;相当于遥控器的关系一样,真正的内容(小红)位于堆里面,而小红这个名字本身代表的是一个引用(遥控器)位于栈里面,通过小红这个遥控器可以定位到具体的内容;
基本类型很简单,就是数据本身,位于全部装在栈里面的容器就可以了;而引用类型很复杂,是对象包含很多属性等数据信息,所以分开存放;栈里面存放的是一个引用指向,真正的内容被放在堆里面了;
转载请注明原文地址: https://ju.6miu.com/read-1288095.html