for循环中的变量声明1

package aa;


import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;


public class test1 {
public static void main(String[] args) {
String str;
for (int i=1;i<9; i++)
{
 str=String.valueOf(i);
 
 System.out.println(str);
}
if( str.toString().equals("6"))   //报the variable  str may not initialized
{
 
System.out.println("=");
}
}


}







casstiel 2015/12/25 17:34:27

这里为什么会报错

ZG_Javaer 2015/12/25 17:35:11

str.equs()

ZG_Javaer 2015/12/25 17:35:14

试下

casstiel 2015/12/25 17:35:21

报the variable  str may not initialized

casstiel 2015/12/25 17:35:30

不是这个问题
17:35:59
casstiel 2015/12/25 17:35:59

这样就不会报错

ZG_Javaer 2015/12/25 17:37:04

这里是局部代码块,执行完了,str就没值了

ZG_Javaer 2015/12/25 17:37:52

变量的作用域了
17:43:06
casstiel 2015/12/25 17:43:06

那为什么我 声明str=null下面就没报错了

ZG_Javaer 2015/12/25 17:44:51

你报错:str变量没有初始化

ZG_Javaer 2015/12/25 17:45:04

str=null;已经初始化
17:48:45
casstiel 2015/12/25 17:48:45

意思是开头不声明str=null的话 虽然在for循环中初始化了,但那是在代码执行时才初始化的,所以循环外的if会报错  对吧?
17:57:35
ZG_Javaer 2015/12/25 17:57:35

实际上for中是重新赋值了

ZG_Javaer 2015/12/25 17:58:01

如果for中的不执行,直接导if这时候还是没有初始化了

casstiel 2015/12/25 17:58:38

恩 就是这个原因

ZG_Javaer 2015/12/25 17:58:38

所以啊,声明变量时顺带的就赋值,是个好习惯
17:58:50
ZG_Javaer 2015/12/25 17:58:50

是的

ZG_Javaer 2015/12/25 17:59:08

for不执行的,这个变量也是没有初始化的

casstiel 2015/12/25 17:59:31


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值