使用未初始化的字节数组单元构造的字符串的比较

时间:2013-07-16 11:11:18

标签: java string

跟随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));
    }
}

打印“假”。如果没有编写我自己的比较器,有没有办法比较字符串,以便不考虑未设置的字节?

1 个答案:

答案 0 :(得分:2)

为什么不保持简单并使用String(bytes, offset, len)构造函数构造从byte[]构建的字符串,并避免包含未设置的字节:

String s2 = new String(b, 0, 8);