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

时间:2014-06-03 05:29:52

标签: 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

4 个答案:

答案 0 :(得分:4)

不,这会在方法范围内创建一个新变量,一旦方法结束就会死亡。类级别成员仍为空。

您需要做的是改变

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

yyy = (int[]) msg.obj;

但请记住,如果未调用handleMessagezzzsval,则{{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;
    }
}