我知道这部分代码的工作原理有问题。
这是:
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?我真的不知道这是怎么回事。谢谢你的帮助!
答案 0 :(得分:2)
您在b0
中使用static
变量,这意味着每次创建新static int count = 1;
时,所有Band
变量都会加倍(因为{{1} }})
请参阅下面的代码,其中包含解释会发生什么的评论:
Bands
答案 1 :(得分:1)
Band
类中的count
字段是静态字段或类变量,这意味着html = requests.get(url).text
类的所有对象都共享它。每次调用构造函数时,都会更新for(i in files) {
x <- read.delim(i, header = F, sep = "\t", na = "*")
setnames(x, 2, i)
assign(i,x)
}
。如果您想了解有关类变量的更多信息,可以查看此Java documentation
答案 2 :(得分:0)
由于变量count
是静态的,因为它被声明为static int count = 1;
,因此类的每个新构造都会对count
对所有有计数的对象执行任何操作。换句话说,当您调用b1
时,count = count * 2;
命令会影响所有计数实例,因此b0
中的计数变量也会加倍。
因此,当您首次使用band()
构建b0
时,需要count
并将其设置为等于1 * 2 = 2. band()
的第二个实例{ {1}}导致所有count计数实例等于* 2.所以,b1
中的计数等于1 * 2 = 2,b1
中的计数等于2 * 2 = 4.