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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘经鹏 中级黑马   /  2012-12-25 18:48  /  1915 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么变量定义在成员位置上时可以暂时不赋值,但定义在局部变量上一定要先做赋值操作呢?

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

7 个回复

倒序浏览
因为在定义成员变量的时候,系统会给他进行初始化,赋给默认值,比如定义int类型为0,boolean类型为flase,String类型为null等。
但是如果在方法里面定义局部变量,系统是不会给他赋值,因此在调用之前需要明确给他指定一个值。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
定义在局部位置的变量也可以先不赋值的。
比如一个方法的形参,是局部变量,便没有给赋值,只有调用此方法时才给赋值。
方法体内的局部变量也可以先定义后赋值。
回复 使用道具 举报
因为成员变量有默认初始化值,所以不需要赋值也可以使用
局部变量只有在初始化变量后才能使用,也就是说定义了局部变量后才在栈内存中开辟了空间

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
成员变量系统可以将其默认初始化,给他一个默认值,因而不写值是可以的。
但是局部变量系统不会直接给他一个初始化值,在new这个变量的时候才会进行初始化操作,如果调用的话,赋值就行了

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
不好意思 理解错了
局部变量可以先定义不赋值,但用到时 必须赋值。
成员变量JAVA会分配默认值,所以可以不赋值。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
何创 中级黑马 2012-12-25 20:07:13
7#
  用代码说明吧~~

class demo
{
   int x ;

for(int i =0;i<6;i++)
{
System.out.print("我是局部变量");
}
}
这里的X是全局变量 也就是你说的变量 。再定义时候可以赋值  比如 int x =5; 也可以不赋值 比如: int x ;
但是在for循环的 int i 就是局部变量  因为是局部 就是马上使用 用完后它消失 而且必须赋值就是题目中的那样 。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
成员变量和局部变量的区别:
1、作用范围:
        成员变量作用于整个类中
        局部变量作用于整个函数中
2、在内存中的位置:
        成员变量:在堆内存中,因为对象的存在,才在内存中存在
        局部变量:存在栈内存中
3、初始化
        成员变量有默认初始化值
        局部变量没有默认初始化值,必须手动初始化
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马