Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.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_Android - Fatal编程技术网

Java 如何声明变量

Java 如何声明变量,java,android,Java,Android,我知道这有点傻,但你是怎么做到的?我有“RTFM”,但我仍然不理解这样的概念,只是在我习惯编程的语言中不存在这样的概念。无论如何,我的问题很简单:如何正确地设置一个全局变量,该变量可以被该类中的所有公共void函数使用 下面是一些示例代码,如果您看不到,我将突出显示冗余: public class baketimer extends Activity implements OnClickListener { /** Called when the activity is first cr

我知道这有点傻,但你是怎么做到的?我有“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;
公共类baketimer扩展活动实现OnClickListener{
/**在首次创建活动时调用*/
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final Button cupcake1=(Button)this.findViewById(R.id.cupcake1);
cupcake1.setOnClickListener(此);
}
公共void onClick(视图v){
开关(v.getId()){
案例R.id.cupcake1:
final Button cupcake1=(Button)this.findViewById(R.id.cupcake1);
新的倒计时(300001000){
公共void onTick(长毫秒未完成){
cupcake1.setText(“+millisuntillfinished/1000);
}
公共无效onFinish(){
cupcake1.setText(“完成!”);
}
}.start();
Toast.makeText(这个“Mmm纸杯蛋糕!”,Toast.LENGTH_SHORT.show();
中断;
我如何为整个类声明
cupcake1


提前感谢!

对于整个类,您可以将其定义为类内但任何函数外的
静态
,例如:

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

但请确保这是您想要的。一个变量将在您的类的所有实例之间共享,如果您使用线程,则可能必须同步对该变量的访问。如果您想要对类中的所有函数都可用但每个实例仍有一个变量,请停止使用静态变量。

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

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,这样变量只属于该对象。

首先我们需要弄清楚“全局变量”是什么意思

  • Java具有由类的所有实例共享的
    静态
    变量
  • 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;
   }
}

嗯,这正是显而易见的事情,我确实尝试过。现在我很困惑,因为当我这样做时,它会产生一个错误。我一定是缺少一个分号,doh!@两个答案,谢谢你在这样一个新问题上的帮助!谢谢,你能解释一下如何设置按钮,如完成上述示例所需的代码吗?我经常使用findViewById,但我怀疑这是因为直到onCreate()才调用setContentView我不能使用findViewById声明按钮,除非它强制关闭,对吗?干杯!!我也是StackOverflow新手,所以请跟我说,我正在尝试:)编辑我的答案。这对你有用吗?当你第一次初始化类时,纸杯蛋糕基本上是空的,并且将被设置为onCreate“…所以请跟我说”。很好,你的电脑的摄像机被关掉了!:-):-)非常感谢你的洞察力。好了,@AutoM8R,这里有一个问题,请你投票给15代表,现在你可以投票给你的心了:-)我真的不确定谁有最好的答案,他们都描绘了伟大的角度!我很想投票给你,但我没有投票权需要一个建议,试着让这个问题更有意义(例如:如何在Java中声明一个全局变量?),这样其他有同样问题的人可以通过搜索或浏览+1将纸杯蛋糕合并到你的代码中更容易找到它!对不起,我只是饿了。
RTFM
代表什么?