t s*_*vyn -3 java arrays concatenation
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();
}
}
Run Code Online (Sandbox Code Playgroud)
我明白因为int是静态的,两个id都是相同的但是无法弄清楚为什么输出是2而不是1?
运行时输出:
Kind: falcon, Id: 2; Kind: eagle, Id: 2;
Run Code Online (Sandbox Code Playgroud)
它是一个静态变量.由所有对象实例共享.你创建了两个对象,因此通过构造函数递增两次..说实话我看不出还有什么可以添加到答案中.
//where [x] denotes id:
First instance: id = [0] + 1; //id is 1
Second instance id = [1] + 1 // id is 2
Run Code Online (Sandbox Code Playgroud)
嗯..如果你想拥有一个唯一的id,你可以有一个对象独有的额外字段,我认为这应该可以解决你的问题:
private int Id;
private static int tracker;
public Bird()
{
//keep track of object instances, yet each increment is unique to a particular
//object
Id = ++tracker;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
68 次 |
| 最近记录: |