0

很久以前我问过的一个后续,我正在尝试从字节数组构造字符串,这些字节数组可能没有将所有单元格设置为特定值(参见下面的代码)。似乎如果 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));
    }
}

哪个打印“假”。没有写我自己的比较器,有没有办法比较字符串,这样它就不会考虑未设置的字节?

4

1 回答 1

2

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

String s2 = new String(b, 0, 8);
于 2013-07-16T11:12:58.323 回答