黑马程序员技术交流社区

标题: 变量声明而不赋值,和赋值为null区别是什么,赋值null初始... [打印本页]

作者: Aron    时间: 2014-5-23 13:18
标题: 变量声明而不赋值,和赋值为null区别是什么,赋值null初始...
本帖最后由 Aron 于 2014-5-23 17:57 编辑

变量声明而不赋值,和赋值为null区别是什么,赋值null实际上是初始化了?  在内存中的分配是怎么弄的啊?
遇到个小疑惑,麻烦解释下

作者: gentleman    时间: 2014-5-23 15:03
在内存中只有赋值了才能初始化变量
全局变量自动赋予初始值,局部变量必须手动赋值
不过最好还是全部都手动赋值,毕竟就算是自动赋值,赋的也是0或者null。
作者: BigKarel    时间: 2014-5-23 15:18
我的理解是赋值为NULL等于提前给它分配了内存空间,就好比你声明你要去售楼处买房,但你没排号是一定买不到的,你要预约号最后就可以买到房。售楼处好比内存空间,预约好比赋值为NULL
作者: Aron    时间: 2014-5-23 16:50
gentleman 发表于 2014-5-23 15:03
在内存中只有赋值了才能初始化变量
全局变量自动赋予初始值,局部变量必须手动赋值
不过最好还是全部都手 ...

哦  有点明白了  但是内存空间如果赋值null  指向的是什么啊  分配内存没?
作者: Aron    时间: 2014-5-23 16:51
BigKarel 发表于 2014-5-23 15:18
我的理解是赋值为NULL等于提前给它分配了内存空间,就好比你声明你要去售楼处买房,但你没排号是一定买不到 ...

那和如果直接赋值一个具体的内容 区别不大是不?
作者: gentleman    时间: 2014-5-23 16:57
Aron 发表于 2014-5-23 16:50
哦  有点明白了  但是内存空间如果赋值null  指向的是什么啊  分配内存没? ...

初始化了
作者: Aron    时间: 2014-5-23 17:56
gentleman 发表于 2014-5-23 16:57
初始化了

好滴 谢谢了
作者: 张志民    时间: 2014-5-23 19:39
学习了学习了
作者: chenzhiyuan    时间: 2014-6-3 03:54
String str;String是在常量池的,在栈内存开辟一个空间,一个内存单元,一个str变量的引用,String str=“ssss”,是在栈内存开辟以个空间,str的String类型的变量引用,指向了堆内存的一片空间,str值是ssss,(堆内存的常量池)String str2=null;也栈开辟个空间,引用指向了对内存,没有内容,其值是null,就是空的意思,比如说给你一袋水果,告诉你地址,去拿过来,你去拿的时候,发现袋子空空余也,就是null的意思,声明一个变量不赋值,就是买了什么一个品种水果和类型,苹果类,一个,还是一筐,可以理解为是数组类型,还是变量类型
int a;你朋友没有告诉你放在你里,但是你要为他准备一个空间,,相当于栈中开辟了变量a的一个单元,
在栈中有个好像叫变量表单,int,byte short  char  boolean float  的基本数据类型,一个变量是开辟以变量单元
long double是几本书类型,一个变量是开辟2个单元
作者: chenzhiyuan    时间: 2014-6-3 03:57
一个变量是开辟一个单元
long double是几本书类型,一个变量是开辟2个单元
。。。。写错啦,
作者: Aron    时间: 2014-6-11 21:50
chenzhiyuan 发表于 2014-6-3 03:54
String str;String是在常量池的,在栈内存开辟一个空间,一个内存单元,一个str变量的引用,String str=“ ...

谢谢啦 明白了
作者: 钟翠翠    时间: 2014-6-27 17:31
null在内存中有存放数据的空间,
作者: GYSWL    时间: 2014-8-9 16:49
不赋值就没有,和赋值空也是一个值
作者: 王成萌    时间: 2014-12-4 20:38
你没有赋值就是没有完成变量的初始化,内存是不会给你这个对象分配地址的,给一个变量赋值为null,在内存中会分配地址空间,只是没有值
作者: VIP969643930    时间: 2016-3-12 22:18
点赞点赞




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2