我想要比较两个整数。第一个整数是从utf-8的字节创建的,第二个整数是我要检查的整数,看它是否等于。
int a = 106;
int b = (int)byteArray[0]; //which actually equals 106 when you printstatement it
,但....
(a==b) //always equals false
int i = 0; While(b != i) { println(i); i++;} //eventually escapes the loop and is true
创建原语时是否也引用了?为什么一个永远不等于b,除非我一直计算到106?
有没有更好的方法来比较字节?因为我已经尝试了所有形式的变量,但它们也不起作用。
答案 0 :(得分:4)
问题出在代码中的其他位置(在您未显示的部分)。这就是为什么建议您提供SSCCE。
以下按预期工作(即打印true
):
public class Test
{
public static void main(String[] args) throws Exception
{
byte[] byteArray = new byte[] { 106 };
int a = 106;
int b = (int) byteArray[0];
if (a == b)
System.out.println("true");
}
}
最有可能的是,在您的代码byteArray[0]
中不包含106. SSCCE会显示此信息。