A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 秦晓东帅帅哒 中级黑马   /  2015-11-1 12:47  /  3304 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

5黑马币
刚老师讲开空间没听懂,哪位大神能详细解释下呢

最佳答案

查看完整内容

开空间,就是在内存中分配一块空间。 比如: int a=1; 当程序运行到这句的时候,计算机(操作系统)会在内存中找到一片空闲的存储空间(怎么找那是操作系统干的事,我也不是很懂),分配空间的大小由 数据的类型决定,此时 变量a空间是连续的 4个字节。然后将 初始值 1 写入内存,并且记下这片空间的起始地址。最后 还要 记下 变量名 与 起始地址的对应关系(这好像是编译器干的事情),也就是说 当我通过变量名操作变量时,可以认 ...

13 个回复

倒序浏览
开空间,就是在内存中分配一块空间。
比如: int a=1;
当程序运行到这句的时候,计算机(操作系统)会在内存中找到一片空闲的存储空间(怎么找那是操作系统干的事,我也不是很懂),分配空间的大小由 数据的类型决定,此时 变量a空间是连续的 4个字节。然后将 初始值 1 写入内存,并且记下这片空间的起始地址。最后 还要 记下 变量名 与 起始地址的对应关系(这好像是编译器干的事情),也就是说 当我通过变量名操作变量时,可以认为是对内存进行操作。
比如:现在我想知道 变量a的值。计算机通过变量名 ,得到变量在内存中的起始地址 。通过变量类型,得到该读多少内存以及如何解释存在内存中的二进制数(对于同一个二进制数不同的类型会有不同的解释,比如:00000001  我可以认为它是整数1,也可以认为它是字符 a。而类型就是人为规定的 如何解释内存中二进制数的协议
通过变量名 a 通过编译器得到 变量的地址 0X0012FF78 然后通过变量地址,和变量类型 从内存中读出变量的值 。
补充一点:
内存也是划分成不同的部分的:
静态内存:用来保存static数据,以及定义在函数之外的变量
栈内存:用来保存定义在函数之内的非static变量
堆内存:自由空间,存储动态分配的对象(分配、销毁都要自己控制)
回复 使用道具 举报
开空间就是储存数据,是为了以后使用用的,
基本数据类型会在棧内开辟空间----因为棧的速度虽然快但是大小有限,所以至储存基本数据类型。
例:int a=10;  就在棧内开辟一个空间储存10这个数据,我们通过a这个名字可以调用或修改他的值。
引用数据类型(new关键字)会在堆内开空间。
例:int【】 arr=new int【】{1,2,3,4,5};
首先在棧内开辟一个空间 名字叫arr ,它里面储存着一个地址,这个地址指向堆内的数组,数组内有1,2,3,4,5这5个值。
大体是这样子的,希望能帮到你。
回复 使用道具 举报

开空间就是储存数据,java中数据分为2中基本数据类型 int boolean double 等 和 引用数据类型 数组 类 借口
开空间也就是开内存吗 java内存分为 栈区 堆区 方法区或者共享区
基本数据类型都存粗在栈区中 int a = 3; 这句代码执行到 就在栈区开辟一个空间 存储a这个变量
引用数据类型会在堆区开空间 比如String s = new String("abc"); 这句代码执行到就会在堆区内开辟一个空间存储字符串abc 同时 栈内存中会开辟一个空间存储s s的值就是堆内存中存储abc的首地址 这有点像C语言里的指针
回复 使用道具 举报
简单来说,就是你在程序中使用的数据,必须先在内存中开辟一块空间,用来声明和存储你要用到的这个数据,否则jvm将不识别这个数据。(我急需黑马币,求赠送点,实在感激不尽,滴水之恩必当涌泉相报)
回复 使用道具 举报
上帝的寵兒 发表于 2015-11-1 20:25
简单来说,就是你在程序中使用的数据,必须先在内存中开辟一块空间,用来声明和存储你要用到的这个数据,否 ...

你倒是来点干货啊
回复 使用道具 举报
菊花爆满山 发表于 2015-11-1 14:37
开空间就是储存数据,java中数据分为2中基本数据类型 int boolean double 等 和 引用数据类型 数组 类 借 ...

c语言,能解释下
回复 使用道具 举报

指针存储的是地址 知道了地址 才能找到你要调用的数据 就好比你住在黄埔大夏408 那我去找你 就要先知道你的地址吧 不然我到哪去找你 所以java里的引用数据就好比C语言里的指针一样
回复 使用道具 举报
我只是来赚经验的
回复 使用道具 举报
开空间就是储存数据,是为了以后使用用的,
基本数据类型会在棧内开辟空间----因为棧的速度虽然快但是大小有限,所以至储存基本数据类型。
例:int a=10;  就在棧内开辟一个空间储存10这个数据,我们通过a这个名字可以调用或修改他的值。
引用数据类型(new关键字)会在堆内开空间。
例:int【】 arr=new int【】{1,2,3,4,5};
首先在棧内开辟一个空间 名字叫arr ,它里面储存着一个地址,这个地址指向堆内的数组,数组内有1,2,3,4,5这5个值。
大体是这样子的,希望能帮到你
回复 使用道具 举报
你问的是啥
回复 使用道具 举报
呃呃···············直接抛弃我们没上过课的人,呜呜~~~~~~~~
回复 使用道具 举报
开空间,就是在内存中分配一块空间。 比如: int a=1; 当程序运行到这句的时候,计算机(操作系统)会在内存中找到一片空闲的存储空间(怎么找那是操作系统干的事,我也不是很懂),分配空间的大小由 数据的类型决定,此时 变量a空间是连续的 4个字节。然后将 初始值 1 写入内存,并且记下这片空间的起始地址。最后 还要 记下 变量名 与 起始地址的对应关系(这好像是编译器干的事情),也就是说 当我通过变量名操作变量时,可以认为是对内存进行操作。 比如:现在我想知道 变量a的值。计算机通过变量名 ,得到变量在内存中的起始地址 。通过变量类型,得到该读多少内存以及如何解释存在内存中的二进制数(对于同一个二进制数不同的类型会有不同的解释,比如:00000001  我可以认为它是整数1,也可以认为它是字符 a。而类型就是人为规定的 如何解释内存中二进制数的协议) 通过变量名 a 通过编译器得到 变量的地址 0X0012FF78 然后通过变量地址,和变量类型 从内存中读出变量的值 。 补充一点: 内存也是划分成不同的部分的: 静态内存:用来保存static数据,以及定义在函数之外的变量 栈内存:用来保存定义在函数之内的非static变量 堆内存:自由空间,存储动态分配的对象(分配、销毁都要自己控制)
回复 使用道具 举报
开空间,就是在内存中分配一块空间。 比如: int a=1; 当程序运行到这句的时候,计算机(操作系统)会在内存中找到一片空闲的存储空间(怎么找那是操作系统干的事,我也不是很懂),分配空间的大小由 数据的类型决定,此时 变量a空间是连续的 4个字节。然后将 初始值 1 写入内存,并且记下这片空间的起始地址。最后 还要 记下 变量名 与 起始地址的对应关系(这好像是编译器干的事情),也就是说 当我通过变量名操作变量时,可以认为是对内存进行操作。 比如:现在我想知道 变量a的值。计算机通过变量名 ,得到变量在内存中的起始地址 。通过变量类型,得到该读多少内存以及如何解释存在内存中的二进制数(对于同一个二进制数不同的类型会有不同的解释,比如:00000001  我可以认为它是整数1,也可以认为它是字符 a。而类型就是人为规定的 如何解释内存中二进制数的协议) 通过变量名 a 通过编译器得到 变量的地址 0X0012FF78 然后通过变量地址,和变量类型 从内存中读出变量的值 。 补充一点: 内存也是划分成不同的部分的: 静态内存:用来保存static数据,以及定义在函数之外的变量 栈内存:用来保存定义在函数之内的非static变量 堆内存:自由空间,存储动态分配的对象
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马