如何声明变量

时间:2010-08-10 03:13:18

标签: java android

我知道这有点蠢,但是你怎么做的?我是“RTFM”,但我仍然不理解这样的概念,只是在我习惯编程的语言中不存在。无论如何,我的问题很简单:如何正确设置一个全局变量,该变量可以被该类中的所有公共void函数使用?

以下是一些示例代码,如果您没有看到,我将突出显示冗余:

public class baketimer extends Activity implements OnClickListener {
    /** Called when the activity is first created. */

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        final Button cupcake1 = (Button) this.findViewById(R.id.cupcake1);

        cupcake1.setOnClickListener(this);        
    }

    public void onClick(View v) {
        switch(v.getId()){
        case R.id.cupcake1:
            final Button cupcake1 = (Button) this.findViewById(R.id.cupcake1);
            new CountDownTimer(30000, 1000) {

                public void onTick(long millisUntilFinished) {
                    cupcake1.setText("" + millisUntilFinished / 1000);
                }

                public void onFinish() {
                    cupcake1.setText("Done!");
                }
            }.start();
            Toast.makeText(this, "Mmm cupcakes!", Toast.LENGTH_SHORT).show();
            break;

我如何为整个班级宣布cupcake1

提前致谢!

3 个答案:

答案 0 :(得分:1)

对于整个班级,您可以在班级内部将其定义为static但在任何函数之外,例如:

public class testprog {
    static int xyz = 0;
    public static void main(String args[]) {
    }
}

但要确保这就是你想要的。 一个变量将在您的类的所有实例之间共享,如果您正在使用线程,则可能必须同步对它的访问。如果你想要你班级中所有功能都可以使用的东西,但每个实例仍然有一个东西,请不要使用静态。

答案 1 :(得分:1)

在类中和任何函数外部声明变量,但不一定是静态的。

public class YourClass{
    Button cupcake = null;
    public void onCreate(Bundle savedInstanceState) {
        ...
        cupcake = (Button) this.findViewById(R.id.cupcake1);
        ...
    }
    public void onClick(Bundle savedInstanceState) {
        ...
    }
}

如果希望程序中的所有对象共享变量,请使用static(static Button cupcake = ...)。否则,不要使用static,以便变量只属于该对象。

答案 2 :(得分:1)

首先,我们需要明确“全局变量”的含义。

  • Java有static个变量,由类的所有实例共享。
  • Java具有属于单个类实例的实例变量。
  • Java在执行某些方法(或代码块)时存在局部变量和参数。
  • Java没有C / C ++意义上的全局变量。

话虽如此,这是一个声明静态和实例变量的简单示例。

public Foo {
   private static int fooCounter;
   private int nosLegs;

   public Foo (int n) {
       nosLegs = n;
       fooCounter++;
   }

   /* There is only one counter of Foo instances created */
   public static int getFooCount() {
       return fooCounter;
   }

   /* Each Foo can have a different number of legs */
   public int getNosLegs() {
       return nosLegs;
   }
}