在java中将局部变量转换为全局变量

时间:2014-02-19 14:35:31

标签: java scope

我是Java编程的新手,我被困在如何将局部变量转换为类变量。我知道的方法是声明变量外部方法,但该变量的值在方法内初始化,当我在方法之外使用该方法时,它给我null。请让我,我该怎么做。

先谢谢。

4 个答案:

答案 0 :(得分:2)

在块外部初始化变量,并将其设置在块内。你可以在外面访问它。

int myInt;
if(x > 10){
   myInt = x;
}
// You have access to myInt here;

VS

if(x > 10){
   int myInt = x;
}
// You Do Not have access to myInt here;

答案 1 :(得分:0)

两件事。在类的构造函数中设置值,并且不要在方法中创建同一变量的新副本(它变为本地范围的变量)。

答案 2 :(得分:0)

创建实例变量(类的成员变量)以简化而不是局部变量。

答案 3 :(得分:0)

在这种情况下,技巧基本上是了解我们在Java中拥有的变量类型:

  1. 实例变量(非静态字段,在类内部而不是方法中声明(取决于您的目标),它们无法重新初始化,自动初始化),例如int x;诠释双数;
  2. 静态变量(每个类仅创建一个副本)
  3. 局部变量(仅在已声明的方法或类中访问-在其范围内,与方法共同使用)

在这种情况下,您要做的是在类的开头定义一个实例变量,然后在系统中的任何位置访问它。

这是我的示例:我有一个简单的POJO`BMI类{

public double weight;

public double getWeight() {
    return weight;
}

public void setWeight(double weight) {
    this.weight = weight;
}

public double getHeight() {
    return height;
}

public void setHeight(double height) {
    this.height = height;
}

public double height;


public BMI() {
}

我的主要Java类...

public class MainActivity {
    double weight;
    double height;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public void calculateBMI(double mWeight, double mHeight){
        BMI myWeight = new BMI();
        BMI myHeight = new BMI();
        weight = mWeight.setWeight();
        height = mHeight.setHeight();
        Height = height;
        weight = weight;
//calculate your bmi

    }   `