一个简单的java程序问题

来源:百度知道 编辑:UC知道 时间:2024/05/05 19:26:44
public class test
{
private static String stuSex;
public static void setVar(String sex)
{
stuSex =sex;
}
public static void updateVar(String sex)
{
String stuSex =sex;
}
public static String getSex()
{
return stuSex;
}

public static void main(String args[])
{
setVar("male");
test.updateVar("female");
String outVar =getSex();
System.out.println(outVar);
}
}
输出结果为什么不是female????

正确代码:
public class sex{
private static String stuSex;
public static void setVar(String sex){
stuSex =sex;
}
public static void updateVar(String sex){
stuSex =sex; //重定义类型
}
public static String getSex(){
return stuSex;
}
public static void main(String args[]){
setVar("male");
updateVar("female");
String outVar =getSex();
System.out.println(outVar);
}
}

因为
public static void updateVar(String sex)
{
String stuSex =sex;
}
这里边的stuSex 不是 private static String stuSex;定义的公共变量stuSex;他是只在updateVar(String sex)范围内有效的变量。
所以你updateVar("female"); 这个操作只是给updateVar(String sex)范围内的那个stuSex付值,并非对公共变量String stuSex付值。
改成
public static void updateVar(String sex)
{
stuSex =this.sex;
}