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