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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 疯狂程序 于 2013-3-26 13:29 编辑

为什么有的变量不初始化不报错,有的变量不初始化报错?

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

5 个回复

倒序浏览
在类中定义的成员变量如果你没有初始化java会自动帮你初始化,如果是数字会自动初始化成0,字符会初始化成'o',对象引用会初始化成null.

当然如果你定义的是局部变量就必须初始化了,否则编译会报错

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
作为类成员变量,无论初始化与否都不会报错。

但是作为函数代码里的变量,无论什么类型不初始化全部都会报错。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
成员变量定义完可以参加运算,因为它在堆内存中,有默认初始化值,java编译器不会报错;
而局部变量在栈内存中,没有默认初始化值,不能定义完就直接参加运算,java编译器会检查出来并报错。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
有的变量不初始化不报错:说明此定义的变量为类的成员变量,系统有默认值,能识别
没初始化报错:是因为局部变量,用户定义变量,不初始化会报错的

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1 新人加油

查看全部评分

回复 使用道具 举报
首先,Java中的变量分为局部变量和全局变量
         局部变量就是在方法中声明的变量,而全局变量就是在类中声明的变量

其次,在java中有这么一条规则,声明在方法中的变量在使用之前必须要初始化,否则不能通过编译。
         而全局变量,默认会设置JAVA默认的值的,如int是0、String则是null等等

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马