黑马程序员技术交流社区

标题: 静态变量初始化值问题 [打印本页]

作者: 冰刃    时间: 2016-4-24 18:44
标题: 静态变量初始化值问题
class Ces1 {
        static int x;
}

public class Test {
        public static void main(String[] args) {

                System.out.println(Ces1.x);
        }

}
请问为什么结果是0,我明明没有对x进行过初始化啊,也没有建立过Ces的对象,为什么直接使用未定义的变量没有问题?


作者: 小K哥    时间: 2016-4-24 19:01
因为成员变量有默认值,比如int型是0,double是0.0.因为该成员变量是静态成员变量,所以可以通过类名调用。
作者: 小K哥    时间: 2016-4-24 19:02
因为成员变量有默认值,比如int型是0,double是0.0.因为该成员变量是静态成员变量,所以可以通过类名调用。
作者: 冰刃    时间: 2016-4-24 19:05
成员变量不是只有创建对象的时候才有默认值吗? 我对象都没创建,哪来的默认值?
作者: 风语风雨    时间: 2016-4-24 22:40
冰刃 发表于 2016-4-24 19:05
成员变量不是只有创建对象的时候才有默认值吗? 我对象都没创建,哪来的默认值? ...

static是表示这个变量是静态的,静态的成员变量是保存在方法区的静态区,可以通过对象去访问,也可以不通过创建对象,直接用类去访问,成员变量系统都会默认初始化值的。整形的是0,浮点型的是0.0;字符串是dull。字符型的是'\u0000';布尔型的是false;
作者: 奉建兵    时间: 2016-4-24 22:53
系统自动初始化




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