我有一个数组,它是我读过的文件的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,看看范围是否不同.我错过了什么,因为这看起来不错?数组值肯定是正确的.
你的条件不相同.
如果所有相应元素对不相等,则第一个将成立
如果存在至少一对不相等的元素,则第二个将成立
我相信你需要第二个代码,但是你需要修改它. 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)