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
嗯
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
嗯