增强的For循环 – 对象数组

好的,我有一个名为Dog()的类,它接受两个参数,一个字符串和一个整数。
这个类有一个名为bark()的方法,它根据传递给Dog()构造函数的整数打印一个字符串。

我还有一个名为Kennel()的类,它创建了一个包含5个Dog()的数组…看起来像这样:

public class Kennel { Dog[] kennel = new Dog[5]; public Kennel() { kennel[0] = new Dog("Harold",1); kennel[1] = new Dog("Arnold",2); kennel[2] = new Dog("Fido",3); kennel[3] = new Dog("Spot",4); kennel[4] = new Dog("Rover",5); } } 

首先,这可行,但似乎错了。 为什么我要从Dog [] ……新狗[5]开始? 也许是愚蠢的问题……我是新手。

无论如何……我被要求做的是使用“增强”for循环来遍历调用bark()的数组。

所以使用传统的for循环,它看起来像这样:

 for (i=0;i<kennel.length;i++) { kennel[i].bark(); } 

简单的东西吧? 但是如何使用for(type item:array)语法实现它?

只需在每个中使用它

 for(Dog d : kennel) { d.bark(); } 

以下是使用增强型for循环的方法。

 for(Dog dog : kennel) { dog.bark(); } 

对于您的其他问题,如果您要使用数组,则必须在开始向其添加元素之前声明大小。 但是,如果您在同一行中进行初始化和声明,则有一个例外。 例如:

 Dog[] dogs = {new Dog("Harold", 1), new Dog("Arnold", 2)}; 

关于你的第二个问题:“为什么我必须从狗[] ……新狗[5]开始?”

因为同样的逻辑,你必须把狗狗=新狗(); —-(1)这就是为什么Dog [] dogArray = new Dog [5]; —(2)

如果您对第一个问题没有问题,那么为什么要对第二个问题进行讨论。