java - 关于 Java 类的示例考试

标签 java class

 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/

相关文章:

java - 如何为 java 程序创建 Unix 加载卡

javascript - ExtJs框架中有概念类吗?

C++虚拟类基础题

php - 如何向 PHP 中的现有类添加方法?

c++ - 使用初始化列表来初始化字段和在构造函数中初始化它们有什么区别?

c++类函数 friend 到另一个类

JAVA:我需要按降序对数组中的一系列进行排序

java - 如何使用java自动从gmail帐户获取新邮件?

java - 可能是java.net.SocketException的原因: recv failed: Insufficient buffer space?

java - DatagramChannel 发送线路上丢失