JavaEE程序猿之对象的内存模型(17)

    xiaoxiao2024-04-17  7

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