如果我在java中将它声明为类的成员变量,我可以在另一个方法中访问一个方法的变量的值吗?
class xxx{
public int[]yyy;
private boolean handleMessage{
...
int[]yyy = (int[]) msg.obj;
}
private zzz{
int[]sval= yyy;
}
}
yyy
的值是否会延续到sval
?
答案 0 :(得分:4)
不,这会在方法范围内创建一个新变量,一旦方法结束就会死亡。类级别成员仍为空。
您需要做的是改变
int[]yyy = (int[]) msg.obj;
到
yyy = (int[]) msg.obj;
但请记住,如果未调用handleMessage
且zzz
为sval
,则{{1}}仍将为空
答案 1 :(得分:1)
我可以在另一种方法中访问一个方法的变量的值 如果我已经将它声明为java中类的成员变量?
不,你不能。方法局部变量yyy
在其声明的方法中具有范围。您无法以任何方式在该方法之外访问它。
实例变量yyy
与方法局部变量yyy
没有任何关系。两者都有两种不同。
答案 2 :(得分:0)
你是对的......这是成员变量的目的。
但是,您的商家信息中存在一个小错误。 您已经在类级别定义了两个不同的yyy引用,在方法级别定义了一个。
您的作业应该是这样的(不在方法中再次创建新变量):
yyy = (int[]) msg.obj;
答案 3 :(得分:0)
由于您在方法handleMessage()中创建了另一个变量yyy
,因此它具有方法范围。除非您手动将其传递给其他方法,否则不会将其传送到方法之外。
如果您刚刚在方法handleMessage()内部为yyy
分配了值而不是创建一个值,那么您将获得yyy
中分配给sval
的值,如下面的代码所示。
class xxx{
public int[]yyy;
private boolean handleMessage{
...
yyy = (int[]) msg.obj;
}
private zzz{
int[]sval= yyy;
}
}