public class Bird
{
private static int id = 0;
private String kind;
public Bird(String requiredKind)
{
id = id + 1;
kind = requiredKind;
}
public String toString()
{
return "Kind: " + kind + ", Id: " + id + "; ";
}
public static void main(String [] args)
{
Bird [] birds = new Bird[2];
birds[0] = new Bird("falcon");
birds[1] = new Bird("eagle");
for (int i = 0; i < 2; i++)
System.out.print(birds[i]);
System.out.println();
}
}
这是一个来自样本考试的问题,询问输出,正确答案是 Kind: falcon, Id: 2;种类:鹰,ID:2;
这有什么意义呢? falcon 的 id 不应该是 1,那么 eagle 因为它的静态 id 应该是 2?
最佳答案
private static int id = 0;
static
表示所有实例将共享该值
因此,每次实例化 Bird
时,值都会增加
public Bird(...){
id = id + 1;
}
Bird bird1 = new Bird("faclon"); // id = 1
Bird bird2 = new Bird("eagle"); // id = 2
System.out.println(birdl); // falcon id 2
System.out.println(bird2); // eagle id 2
假设你这样做了
Bird bird1 = new Bird("falcon"); // id = 1
System.out.println(bird1); // falcon id = 1
Bird bird2 = new Bird("eagle"); // id = 2
System.out.println(bird2); // eagle id 2
System.out.println(bird1); // falcon id = 2
Bird bird = new Bird("elephant"); // id = 3
System.out.println(bird1); // falcon id 3
区别在于打印语句的位置。
编辑:所需的输出
Bird[] birds = new Bird[2];
String[] birdNames = {"falcon", "eagle"};
for (int i = 0; i < birds.length; i++){
birds[i] = new Bird(birdNames[i]);
System.out.println(birds[i]);
}
在上面的代码中,你会得到
kind: falcon id: 1
kind: eagle id: 2
关于java - 关于 Java 类的示例考试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20027466/