Java:Arrays.equals无效

Lin*_*lda 0 java arrays

我有一个数组,它是我读过的文件的byte [].我需要检查文件的前5个字节.首先,我做了这个:

if (ips_bytes[0] != ips_ident[0] && ips_bytes[1] != ips_ident[1] && ips_bytes[2] != ips_ident[2]
            && ips_bytes[3] != ips_ident[3] && ips_bytes[4] != ips_ident[4]) {
        return "Nope!";
    }
Run Code Online (Sandbox Code Playgroud)

这有效,但它看起来不太好,我猜它效率不高.所以我查看了其他方法并找到了Arrays.equals().我改变了我的代码来反映:

if (!Arrays.equals(ips_ident, Arrays.copyOfRange(ips_bytes, 0, 4))) {
        return "Baka";
    }
Run Code Online (Sandbox Code Playgroud)

这不起作用,我尝试了0,4和1,5,看看范围是否不同.我错过了什么,因为这看起来不错?数组值肯定是正确的.

Ria*_*iaD 6

你的条件不相同.

如果所有相应元素对不相等,则第一个将成立

如果存在至少一对不相等的元素,则第二个将成立

我相信你需要第二个代码,但是你需要修改它. Arrays.copyOfRange的第三个参数索引是exculeded.所以你需要

Arrays.copyOfRange(ips_bytes, 0, 5))
Run Code Online (Sandbox Code Playgroud)

或更好

Arrays.copyOfRange(ips_bytes, 0, ips_ident.length))
Run Code Online (Sandbox Code Playgroud)