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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 1312564637 中级黑马   /  2015-10-14 12:15  /  11432 人查看  /  57 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

5黑马币
局部变量用的时候必须给他初始值,可为什么有的局部变量只定义不给他初始化也没事,有的就会报错呢

57 个回复

正序浏览
Boolean的值只能是true或者false,你不给初始赋值的话它也蒙啊
回复 使用道具 举报
zhuwenjia 来自手机 中级黑马 2015-11-22 16:25:06
51#
这个可不可能与编译器有关系,默认是需要付初值的。
回复 使用道具 举报
有些没给初始值是因为他默认有值  像Int的默认值为0  String的默认值为null  
回复 使用道具 举报
有些没给初始值是因为他默认有值  像Int的默认值为0  String的默认值为null  
回复 使用道具 举报
因为你程序里没用到它 只是放在那,  在用它前必须赋值,不然就报错了
回复 使用道具 举报
final修饰的变量只能赋值一次,不会默认初始化,就会报错啦
回复 使用道具 举报
qishi有的时候真是搞不明白JVM在后台到底是怎么搞得 ,就跟一个静态刚发样不是说得用类名或者对象调用吗。但是子类调用父类的静态方法时,不用父类类名.调用或者是对象调用,直接用方法名就可以了。。
回复 使用道具 举报
定义局部变量时必须初始化。
当你定义一个局部变量,没有初始化变量,也没有使用这个变量时就不会报错,反之则报错。
回复 使用道具 举报
陈威 初级黑马 2015-10-31 23:31:15
44#
你只需要记住只要在栈内存中的变量都不会初始化,在堆中和方法区中的都会初始化值!
回复 使用道具 举报
局部变量使用前必须初始化
回复 使用道具 举报
变量定义必须给初始值,但是如果你定义的时候不给,后面给也可以。如果后面也不给直接用就会报错。你的那个代码我看了,变量b你在判断的时候给它赋值了。跪求选择为答案。缺黑马币啊,不然不能上就业班。在这谢谢了

点评

可是我不会弄啊  发表于 2015-10-29 20:45
回复 使用道具 举报
如果不自动初始化,
可以让初始化的选择给用户,做到最少的初始化动作。
而用户不进行初始化的话,意味着用户不关心,但是明显,显示初始化是更好的习惯。
让用户写出来的话,更显得程序的某种完整性(能看出来初始化成什么样,而不是依赖
于是编译器偷偷摸摸在后面做手脚)
所以一方面可以认为可以在速度上,最少初始化,另一方面自由度交给了用户。
当然,自动进行初始化也是完全可以的,只要你习惯了在这里省点事,如果不动作,就让
编译器给一个默认动作。
回复 使用道具 举报
如果不给局部变量初始值程序也不会报错,但前提是不能参与运算,参与运算就会报错。这和成员变量不同,成员变量有默认的初始值,但局部变量没有!!!!新人入学,急需黑马币!!!
回复 使用道具 举报
月明 中级黑马 2015-10-29 01:03:34
39#
1312564637 发表于 2015-10-14 14:30
public static void main(String[] args) throws IOException {
       FileInputStream fi=new FileInputS ...

局部里的变量赋值可以分两步来做的 如果要用的时候就必须初始化 这里在while方法里使用 fi.read();给它赋了值 所以这里已经被初始化了 然后再看它是否等于-1  所以是在使用前已经被赋值
回复 使用道具 举报
只要你在用这个变量之前给他赋过初始值就行
你能不能给我举个具体的例子  不然我不好说
回复 使用道具 举报
孤单背影 来自手机 中级黑马 2015-10-23 11:13:13
37#
局部变量在使用的时候是必须先赋值再使用
回复 使用道具 举报
局部变量在声明和首次提及的时候是无需赋值的,当首次被调用的时候才会去甄别是否已有。
回复 使用道具 举报
1312564637 发表于 2015-10-14 14:28
public static void main(String[] args) {
                //isZhi(13);
                isZhi(96);

你的boolean是封装类型的 返回值是null
回复 使用道具 举报
首先,你要理解,什么叫使用变量,是不是只要代码中出现了该变量就是使用了变量?我觉得不是。
我认为这“要先初始化才能使用”中的使用是指获取(get)变量的值。而其中的“初始化”就是设置(set)变量的值。
不管定义变量在哪里,有没有给初始化值,只要在获取(get)变量的值之前设置(set)了变量的值,就不会报错。
回复 使用道具 举报
可能跟你用的编译器有关吧
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马