黑马程序员技术交流社区
标题:
来来看看这个语句有什么问题?
[打印本页]
作者:
打发士大夫
时间:
2015-8-25 19:13
标题:
来来看看这个语句有什么问题?
int b ;
for (int a =1;a < 6 ;a++ ) {
for (b = 1;b < 8 ;b++ ) {
System.out.print("*");
}
System.out.println();
}
System.out.println("b="+b);
作者:
打发士大夫
时间:
2015-8-25 19:15
有知道的同学吗
作者:
不想睡
时间:
2015-8-25 19:18
int b 没有初始化值
作者:
Five_伍
时间:
2015-8-25 19:18
作用域问题,输出的b没有定义,循环中的b作用域不能到达循环外,。
作者:
Five_伍
时间:
2015-8-25 19:20
b没有初始化,。
作者:
至尊幽蓝
时间:
2015-8-25 19:38
局部变量可以不初始化,但必须在调用时有值。
你这段代码给b赋值是在一级for循环的内部,假如一级for循环在第一次判断条件时就为假,内部循环也就没有执行的机会,b就未赋值,那么在打印“b=”+b时,就会出错。
也就是说,你在使用变量的值时必须保证此时它有值(成员变量是默认赋值,所以无此问题)。
你不信可以简单的试试删除“b=”+b中的b,就不出错了。
作者:
放飞邹莺
时间:
2015-8-25 20:46
成员变量有默认初始化值,局部变量必须要初始化或者赋值调用,循环内的内容执不执行都会报错,因为b赋值是在循环内部,作用域就在循环内,循环执行完毕,b的值就在栈内存中消失.在循环外输出b就会报b为初始化的错,
作者:
ruili
时间:
2015-8-25 20:57
for循环中的初始化变量的值在for循环结束后就会被清除
作者:
刘登飞
时间:
2015-8-25 21:12
表示能看懂问题但是说不出来,唉 还是等着基础班开学认真学吧
作者:
至尊幽蓝
时间:
2015-8-26 16:43
放飞邹莺 发表于 2015-8-25 20:46
成员变量有默认初始化值,局部变量必须要初始化或者赋值调用,循环内的内容执不执行都会报错,因为b赋值是在循 ...
值的作用域在哪不是看它在哪赋值,是看它在哪定义的,在外面定义的,在块内部赋值,出了块,这个变量值就是响应改变了,这个想想就知道
作者:
纳木错的程序猿
时间:
2015-8-26 16:54
第二个for循环中对变量b赋值后,待for循环结束。这个变量的值在内存中应该就释放掉了吧
作者:
肖天长
时间:
2015-8-26 17:55
局部变量的b在循环后就消失了 所以打印会报错
作者:
SYAD
时间:
2015-8-26 20:33
b变量没有初始化导致的
作者:
大头爱傻瓜
时间:
2015-8-26 20:36
b值不再里层for中 不能打印出来的
作者:
809116766
时间:
2015-8-26 20:48
不错,不错,加油
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2