黑马程序员技术交流社区

标题: 关于定义变量的疑惑 [打印本页]

作者: 高俊杰    时间: 2012-9-13 21:51
标题: 关于定义变量的疑惑
本帖最后由 cooldog101 于 2012-9-13 22:50 编辑

      之前学习定义变量必须给变量进行初始化赋值,但下面的代码没有给变量进行初始化,为什么也能
运行,没有报错。
       定义变量格式:数据类型  变量名 = 初始化值;例如:int x = 3;

class Exercise {

     public static void main(String[] args) throws Exception {
  
                   int x;                   //此处定义了变量x,但并没有给x进行初始化。
                  do {
                          x = System.in.read();
                       } while(x != 'q');
     }
}

作者: 杨震    时间: 2012-9-13 22:02
没有初始化是可以的,但是如果你没有初始化然后也没有赋值最后使用了它那是不行的

你这个是没有初始化,但接着已经x = System.in.read()赋值了,然后去使用是没有问题的.


作者: 程金    时间: 2012-9-13 22:03
本帖最后由 程金 于 2012-9-13 22:38 编辑

刚没看清题目,说错了,不好意思
作者: 孙岳    时间: 2012-9-13 22:14
int x;
x = 2;
这样跟int x = 2;是一样的。所以


class Exercise {

     public static void main(String[] args) throws Exception {
  
                   int x;                   //此处定义了变量x,但并没有给x进行初始化。
                  do {
                          x = System.in.read(); //此处第一次执行,给x赋值,相当于初始化了。
                       } while(x != 'q');
     }
}

作者: 任艳旭    时间: 2012-9-13 22:20
成员变量不赋值,会自动初始化,可以直接使用。
局部变量不初始化,直接使用就会报错,
但是你的代码,开始定义了,然后下面的代码就赋值了,所以程序不会报错!
作者: 尤圣回    时间: 2012-9-13 22:23
因为他在存在堆内存中中 而且你变没有实用  x = System.in.read();  对象就已经被初始化了
作者: 杨卫腾    时间: 2012-9-13 22:35
       定义变量格式:数据类型  变量名 = 初始化值;例如:int x = 3;

class Exercise {

     public static void main(String[] args) throws Exception {
  
                   int x;                   //此处定义了变量x,但并没有给x进行初始化。
                  do {
                                 x = System.in.read(); //在这里进行了初始化,这里要是不进行初始化的,你的程序就不会编译通过的。
                       } while(x != 'q');
     }
}

局部变量必须要进行初始化的,否则编译失败。
成员变量可以不进行初始化,系统会默认进行初始化的。
作者: 高俊杰    时间: 2012-9-13 22:49
杨震 发表于 2012-9-13 22:02
没有初始化是可以的,但是如果你没有初始化然后也没有赋值最后使用了它那是不行的

你这个是没有初始化,但 ...

大概明白了,定义变量没有初始化,不调用就不会报错;




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