【原因分析】
原因分为三种:
UR 已定义的变量未初始化(赋值)就使用,例如:
String name;
System.out.println(name);
DU
变量定义以后仅在后面的某个分支中使用,例如:
String name = "sam";
if ("a".equals(argumentName)) {
System.out.println(name);
}
或者变量在某个分支中赋值后未使用过,例如:
public void test1(int i) {
String name;
if (i > 0) {
name = "张三";
System.out.println(name);
} else {
name = "李四"; // 从这里开始到方法结束,未使用过此变量。
......
}
}
DD 已赋值的变量在未使用的情况下重新赋值,例如:
String name = "张三";
......
name = "李四";
System.out.println(name);
【影响分析】
会导致运行时异常,或执行一些不必要的代码,降低程序运行效率。
【修改建议】
需要修改。
UR类型的,先初始化再使用,例如:
String name = "sam";
System.out.println(name);
DU类型的,将仅在某分支中使用的变量的定义移动到该分支中去,例如:
String name = "sam";
if ("a".equals(argumentName)) {
String name = "sam";
System.out.println(name);
}
在某个分支中赋值后未使用过的情况,则去掉该赋值语句:
public void test1(int i) {
String name;
if (i > 0) {
name = "张三";
System.out.println(name);
} else {
name = "李四"; // 从这里开始到方法结束,未使用过此变量。
......
}
}
DD类型的,定义变量时先不要初始化:
String name = "张三";
......
name = "李四";
System.out.println(name);