gpt4 book ai didi

java - 我应该在哪里声明我的变量?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:58:22 24 4
gpt4 key购买 nike

在类的开头声明我的变量时,我不能在其他方法的条件语句中使用它们。我尝试在有效的方法内声明它们,但我无法在方法外使用变量。

这是我的代码示例

protected void onClick(View v){
switch(v.getId()){
int counter;
case R.id.btsend:
for (int i = 0;i<=0;i++){
if (true)
counter += 1;
}

TextView.setText(counter);

break;
}
}

最佳答案

这里没有“一刀切”的答案,因为声明变量的原因各不相同。

静态变量(直接在类中声明,使用 static 修饰符)是类范围的,而不是特定于单个实例的。通常静态变量是 final - 可变的全局状态是一件棘手的事情。

实例变量(直接在类中声明)用于记录对象的状态。它们将在每个实例方法中可用。

(实例和静态变量都是字段。)

局部变量(在构造函数或方法中声明)仅在该方法中可用,并且是有效的“临时”数据,仅在该单个方法调用中需要。 (如果递归调用该方法,则每次调用都会获得自己独立的一组变量。)

因此对于每个变量,考虑它是否在逻辑上是对象状态的一部分,并在适当的地方声明它。一旦你决定了它是什么类型的变量,你就可以确定物理位置。对于字段,声明它的确切位置(非常)无关紧要 - 在文件的顶部、中间或底部。字段之间的顺序在初始化方面很重要,但它是在使用它的方法之前还是之后并不重要。不过,将所有字段声明在一个一致的位置通常是个好主意 - 我个人通常这样做:

class Foo
{
// Static variables
// Instance variables
// Constructors
// Methods
// Nested types
}

...但这只是约定。

对于局部变量,通常最好在尽可能小的范围内尽可能晚地声明它们。所以不是:

int i;
int x;
for (i = 0; i < 10; i++) {
x = i * i;
System.out.println(x);
}

这将是更可取的:

for (int i = 0; i < 10; i++) {
int x = i * i;
System.out.println(x);
}

通过限制变量的范围,通常更容易对其进行推理。

关于java - 我应该在哪里声明我的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23007251/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com