Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果在java中将一个方法的变量声明为该类的成员变量,那么我可以在另一个方法中访问该方法的变量的值吗?_Java_Class_Variables_Methods - Fatal编程技术网

如果在java中将一个方法的变量声明为该类的成员变量,那么我可以在另一个方法中访问该方法的变量的值吗?

如果在java中将一个方法的变量声明为该类的成员变量,那么我可以在另一个方法中访问该方法的变量的值吗?,java,class,variables,methods,Java,Class,Variables,Methods,如果在java中将一个方法的变量声明为该类的成员变量,那么我可以在另一个方法中访问该方法的变量的值吗 class xxx{ public int[]yyy; private boolean handleMessage{ ... int[]yyy = (int[]) msg.obj; } private zzz{ int[]sval= yyy; } } yyy的值是否结转到sval?否,该值在方法范围内创建一

如果在java中将一个方法的变量声明为该类的成员变量,那么我可以在另一个方法中访问该方法的变量的值吗

class xxx{
    public int[]yyy;
    private boolean handleMessage{
        ...
        int[]yyy = (int[]) msg.obj;
    }
    private zzz{
        int[]sval= yyy;
    }
}

yyy
的值是否结转到
sval

否,该值在方法范围内创建一个新变量,该变量在方法结束后即消失。类级别成员仍然为空

你需要做的是改变

int[]yyy = (int[]) msg.obj;


但是请记住,如果未调用
handleMessage
,而
zzz
为,则
sval
仍将为null

否,这将在方法范围内创建一个新变量,该变量在方法结束后即消失。类级别成员仍然为空

你需要做的是改变

int[]yyy = (int[]) msg.obj;

但请记住,如果未调用
handleMessage
,而
zzz
为,则
sval
仍将为空

我可以在另一个方法中访问一个方法的变量值吗 如果我在java中将它声明为类的成员变量

class xxx{
    public int[]yyy;
    private boolean handleMessage{
        ...
        int[]yyy = (int[]) msg.obj;
    }
    private zzz{
        int[]sval= yyy;
    }
}
不,你不能。方法局部变量
yyy
在其声明的方法中有一个作用域。您不能以任何方式在该方法之外访问它

实例变量
yyy
与方法局部变量
yyy
没有任何关系。两者都是两码事

我可以在另一个方法中访问一个方法的变量值吗 如果我在java中将它声明为类的成员变量

class xxx{
    public int[]yyy;
    private boolean handleMessage{
        ...
        int[]yyy = (int[]) msg.obj;
    }
    private zzz{
        int[]sval= yyy;
    }
}
不,你不能。方法局部变量
yyy
在其声明的方法中有一个作用域。您不能以任何方式在该方法之外访问它


实例变量
yyy
与方法局部变量
yyy
没有任何关系。两者都是不同的。

你说得对。。。这就是成员变量的用途

然而,您的列表中有一个小错误。 您已经定义了两个不同的yyy引用,一个在类级别,另一个在方法级别

您的赋值应该是这样的(无需在方法中再次创建新变量):


你是对的。。。这就是成员变量的用途

然而,您的列表中有一个小错误。 您已经定义了两个不同的yyy引用,一个在类级别,另一个在方法级别

您的赋值应该是这样的(无需在方法中再次创建新变量):


由于在方法handleMessage()内创建了另一个变量
yyy
,因此它具有方法作用域。除非您手动将其传递给其他方法,否则它不会携带到方法外部

在这种情况下,如果您刚刚在方法handleMessage()中为
yyy
赋值,而不是创建一个,那么您将在
yyy
中获得分配给
sval
的值,如下代码所示

class xxx{
    public int[]yyy;
    private boolean handleMessage{
        ...
        yyy = (int[]) msg.obj; 
    }
    private zzz{
        int[]sval= yyy;
    }
}

由于在方法handleMessage()内创建了另一个变量
yyy
,因此它具有方法作用域。除非您手动将其传递给其他方法,否则它不会携带到方法外部

在这种情况下,如果您刚刚在方法handleMessage()中为
yyy
赋值,而不是创建一个,那么您将在
yyy
中获得分配给
sval
的值,如下代码所示

class xxx{
    public int[]yyy;
    private boolean handleMessage{
        ...
        yyy = (int[]) msg.obj; 
    }
    private zzz{
        int[]sval= yyy;
    }
}