跟随one I asked long time ago,我正在尝试从字节数组构造字符串,这些数组可能没有将所有单元格设置为特定值(参见下面的代码)。似乎如果一个String是由类似的字节数组构成的,那么分配但未设置的字节仍然有效,这使得比较(使用equals()
)失败。
请参阅,
public class Test{
public static void main(String[] args){
byte[] b = new byte[10];
String s = "RESET ME";
for(int i = 0; i < 8; i++){
b[i] = (byte) s.charAt(i);
}
String s2 = new String(b);
System.out.println(s.equals(s2));
}
}
打印“假”。如果没有编写我自己的比较器,有没有办法比较字符串,以便不考虑未设置的字节?
答案 0 :(得分:2)
为什么不保持简单并使用String(bytes, offset, len)
构造函数构造从byte[]
构建的字符串,并避免包含未设置的字节:
String s2 = new String(b, 0, 8);