2015-11-20 74 views
-2

最近我在代码中发现一些隐藏在Java字符串中的负字节,导致.equals字符串比较失败。Java字符串中负字节值的意义是什么?

字符串中负字节值的含义是什么?他们能代表什么吗?在任何情况下,String中的负数字节值都可以解释为任何东西?我很喜欢这个编码业务,所以如果需要对不同的编码方案进行解释,请不要犹豫。

+0

Java字节已签名。 –

+0

是什么让你认为这是造成等值比较失败?更重要的是,Java字符串是由字符组成的,而不是字节。 –

+0

当你谈论Java字符串中的字节时,你是什么意思? Java字符串由无符号的16位字符构成。 – user2357112

回答

2

Java字符串包含字符,但是您可以用不同的方式解释它们。如果每个字符都是一个字节,则它的范围可以从0-255,包括0和255。这是8位。

现在,最左边的位可以被解释为一个符号位或作为字符大小的一部分。如果该位被解释为符号位,那么您将拥有从-128到+127(含)的数据项。

您没有发布用于打印字符的代码,但是如果您使用将字符解释为有符号数据项的逻辑,那么您将在输出中得到负数。