代码中的这部分是什么意思? (Java)

What does this part in code mean? (Java)

大家好,我是 java 的新手,我遇到了这个问题 好的,我在这里得到了一些我无法理解的东西

我有这个 class:

class FailSoftArray {

    private int a[]; // reference to array
    private int errval; 
    public int length; 

    public FailSoftArray(int size, int errv) {
        a = new int[size];
        errval = errv;
        length = size;
    }

    public int get(int index) {
        if(indexOK(index)) return a[index];
        return errval;
    }

    public boolean put(int index, int val) {
        if(indexOK(index)) {
            a[index] = val;
            return true;
        }
        return false;
    }

    private boolean indexOK(int index) {
        if(index >= 0 & index < length) return true;
        return false;
    }
}

indexOK(index)是什么意思?它有什么作用?

这是一种判断数组中要获取的索引是否有效的方法。

通常情况下,如果使用小于零或大于或等于数组长度的值作为索引,则会导致错误,抛出 IndexOutOfBoundsException,因为数组的索引来自0length - 1.

该方法通过确保索引在使用之前始终有效来避免可能的结果,它通过比较索引以查看它是否为 >= 0,然后比较 < length,然后& 确保 both 都为真(如果两个条件都为真,它可以用作数组的索引而不会抛出异常。)

当您调用 indexOK 时,您的程序将运行以下方法,并将索引作为参数:

private boolean indexOK(int index) {
if(index >= 0 & index < length) return true;
return false;
}
}

indexOK returns 一个布尔值,所以结果不是真就是假。什么时候结果为真?

if(index >= 0 & index < length) return true;
return false;

如果参数大于或等于零且参数小于长度,则结果为真。否则,结果为假。

indexOK 的目的是检查一个值是否是数组的适当索引。负索引是无效的,等于或超过它引用的数组长度的索引也是如此。所以检查

index >= 0

判断索引是否为负数,校验

index < length

确定索引是否等于或超过它引用的数组的长度。

让我用更容易理解的方式重写方法:

    private boolean indexOK(int index) {
        if(index >= 0 & index < length) {
            return true;
        }
        return false;
    }

当 index 的值至少为 0 且同时小于 length 时,该方法将 return 为真。您可以使用不带大括号的 if 语句,但它只会使用以下行作为 'inner block'。这是一个相当糟糕的做法,因为它有点不清楚。此外,它很容易成为不需要的错误和错误的原因,因为在 'inner block' 中添加行而不在它们周围添加大括号的情况并不少见。以我的拙见,1 行(或 2 个括号)代码并没有那么多,应该始终添加它们。