我不知道这段代码的哪些部分是有效的。
这里是:
public class fia1 {
public static void main(String [] args) {
Band b0 = new Band();
b0.name = "Beastie";
b0.age = 25;
Band b1 = new Band();
b1.name = "Orchestra";
b1.age = 100;
System.out.println(b0.count);
Band b2 = new Band();
b2.name = "Polka";
b2.age = 5;
System.out.println("Names: " + b0.name + " " + b1.name + "
" + b2.name);
System.out.println(Band.count);
b1 = b2;
b1.age = 10;
b0.age = b2.age + b0.age;
System.out.println("Ages = " + b0.age + " " + b1.age + " "
+ b2.age);
}
}
class Band {
String name;
int age;
static int count = 1;
Band() {
count = count * 2;
}
}
那么这个打印是什么:
4
Names: Beastie, Orchestra, Polka
8
Ages: 35, 10, 10
我很困惑如何从第一次计数中得到 4。我也知道
static int count = 1;
是我误解的地方。这是java计算变量的方式吗?按 1,那么 2 是 Beastie,3 是 Orchestra,4 是 Polka?我真的不知道这是如何运作的。感谢您的帮助!
最佳答案
您在 static int count = 1;
中使用static
变量,这意味着每次您创建新的 Band
时,该变量都会所有Bands
都加倍(因为count = count * 2;
)
请参阅下面的代码以及解释所发生情况的注释:
public static void main(String [] args)
{
Band b0 = new Band(); //Count becomes 1*2 = 2.
b0.name = "Beastie";
b0.age = 25;
Band b1 = new Band(); //Count becomes 2*2 = 4.
b1.name = "Orchestra";
b1.age = 100;
System.out.println(b0.count); //Prints 4.
Band b2 = new Band(); //Count becomes 4*2 = 8.
b2.name = "Polka";
b2.age = 5;
System.out.println("Names: " + b0.name + " " + b1.name + " " + b2.name);
System.out.println(Band.count); //Prints 8.
b1 = b2;
b1.age = 10;
b0.age = b2.age + b0.age;
System.out.println("Ages = " + b0.age + " " + b1.age + " " + b2.age);
}
关于java - 与此代码中的 Count 用法混淆。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44014676/