Java 在假定长度已知的情况下,使用array.length与数组中的元素数

Java 在假定长度已知的情况下,使用array.length与数组中的元素数,java,arrays,Java,Arrays,我正在为考试而学习,并且正在经历旧的考试 其中一个类包含两个数组,每个数组中应该有二十个元素 在遍历数组时,最好使用array.length还是使用数组中的元素数量 例如,我们正在遍历一个数组,希望找到最大的教室。我编写了一个for循环,在编写它时,使用array.length还是20更好?代码如下: public Clsrm biggestClsrm() { Clsrm classroom = new Clsrm(0, 0 , true); for (int i = 0; i

我正在为考试而学习,并且正在经历旧的考试

其中一个类包含两个数组,每个数组中应该有二十个元素

在遍历数组时,最好使用
array.length
还是使用数组中的元素数量

例如,我们正在遍历一个数组,希望找到最大的教室。我编写了一个for循环,在编写它时,使用
array.length
还是20更好?代码如下:

public Clsrm biggestClsrm() {
    Clsrm classroom = new Clsrm(0, 0 , true);

    for (int i = 0; i < _clsrms.length; i++) {// or should it be for (int i = 0; i < 20 ; i++)
        if (_clsrms[i].isBigger(classroom)) {
            classroom = new Clsrm(_clsrms[i]);
        }
    }
}
public Clsrm biggestClsrm(){
Clsrm教室=新的Clsrm(0,0,真);
对于(int i=0;i<\u clsrms.length;i++){//还是应该是(int i=0;i<20;i++)
如果(_clsrms[i].isbiger(教室)){
教室=新的Clsrm(_Clsrm[i]);
}
}
}

假设条件是应该的,安全吗?

使用
\u clsrms.length
。考虑这个坏代码作为一个例子:

class BadLoop {
    Clsrm _clsrms = new Clsrm[20];
    public Clsrm biggestClsrm() {
        for (int i = 0; i < 20; i++) {
            ...
        }
    }
}
类坏循环{
Clsrm _clsrms=新的Clsrm[20];
公共Clsrm biggestClsrm(){
对于(int i=0;i<20;i++){
...
}
}
}
编号
20
在代码中重复两次-一次在
\u clsrms
声明中,一次在循环中

如果有人将声明中的
20
更改为
30
,则
biggestClsrm()
将在确定最大教室时忽略最后的
10
教室。另一方面,如果声明从
20
更改为
10
,则
biggestClsrm()
将停止工作,因为它将崩溃。请注意,使用
length
而不是固定数字可以避免这两个问题


从本质上讲,代码的重复部分变成了维护责任,使用
长度

可以很容易地避免,代码重复从来都不是一个好主意。硬编码20复制了数组的大小。您不应该假设。不要简单地假设数组中有20个元素。因为这是一个测试,验证可能是你将被评分的东西。小心点。@Arc676测试题说有二十个对象,这就是为什么我假设数组中有二十个对象。