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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 高俊杰 初级黑马   /  2012-9-13 21:51  /  1672 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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');
     }
}

7 个回复

倒序浏览
没有初始化是可以的,但是如果你没有初始化然后也没有赋值最后使用了它那是不行的

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

回复 使用道具 举报
本帖最后由 程金 于 2012-9-13 22:38 编辑

刚没看清题目,说错了,不好意思
回复 使用道具 举报
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');
     }
}
回复 使用道具 举报
成员变量不赋值,会自动初始化,可以直接使用。
局部变量不初始化,直接使用就会报错,
但是你的代码,开始定义了,然后下面的代码就赋值了,所以程序不会报错!
回复 使用道具 举报
因为他在存在堆内存中中 而且你变没有实用  x = System.in.read();  对象就已经被初始化了
回复 使用道具 举报
       定义变量格式:数据类型  变量名 = 初始化值;例如: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
没有初始化是可以的,但是如果你没有初始化然后也没有赋值最后使用了它那是不行的

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

大概明白了,定义变量没有初始化,不调用就不会报错;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马