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

© 冰刃 中级黑马   /  2016-4-24 18:44  /  602 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Ces1 {
        static int x;
}

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

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

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

5 个回复

倒序浏览
因为成员变量有默认值,比如int型是0,double是0.0.因为该成员变量是静态成员变量,所以可以通过类名调用。
回复 使用道具 举报
因为成员变量有默认值,比如int型是0,double是0.0.因为该成员变量是静态成员变量,所以可以通过类名调用。
回复 使用道具 举报
成员变量不是只有创建对象的时候才有默认值吗? 我对象都没创建,哪来的默认值?
回复 使用道具 举报
冰刃 发表于 2016-4-24 19:05
成员变量不是只有创建对象的时候才有默认值吗? 我对象都没创建,哪来的默认值? ...

static是表示这个变量是静态的,静态的成员变量是保存在方法区的静态区,可以通过对象去访问,也可以不通过创建对象,直接用类去访问,成员变量系统都会默认初始化值的。整形的是0,浮点型的是0.0;字符串是dull。字符型的是'\u0000';布尔型的是false;
回复 使用道具 举报
系统自动初始化
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马