黑马程序员技术交流社区

标题: 为什么有的变量不初始化不报错,有的变量不初始化报错? [打印本页]

作者: 疯狂程序    时间: 2013-3-25 20:14
标题: 为什么有的变量不初始化不报错,有的变量不初始化报错?
本帖最后由 疯狂程序 于 2013-3-26 13:29 编辑

为什么有的变量不初始化不报错,有的变量不初始化报错?
作者: 胡国彬    时间: 2013-3-25 20:44
在类中定义的成员变量如果你没有初始化java会自动帮你初始化,如果是数字会自动初始化成0,字符会初始化成'o',对象引用会初始化成null.

当然如果你定义的是局部变量就必须初始化了,否则编译会报错
作者: lucy198921    时间: 2013-3-25 22:36
作为类成员变量,无论初始化与否都不会报错。

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

作者: 薛飞    时间: 2013-3-26 00:04
成员变量定义完可以参加运算,因为它在堆内存中,有默认初始化值,java编译器不会报错;
而局部变量在栈内存中,没有默认初始化值,不能定义完就直接参加运算,java编译器会检查出来并报错。
作者: 夏凡    时间: 2013-3-26 11:02
首先,Java中的变量分为局部变量和全局变量
         局部变量就是在方法中声明的变量,而全局变量就是在类中声明的变量

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





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