Java byte[]toString()给出一个奇怪的字符串,而不是实际值

Java byte[]toString()给出一个奇怪的字符串,而不是实际值,java,android,string,byte,Java,Android,String,Byte,byte[]a的值为{119},这是“w”的ascii等价物,但当我使用.toString()将其转换为字符串时,它会给我一个奇怪的字符串。知道我做错了什么吗 byte[] a = characteristicRX.getValue(); String rscvString = a.toString(); Log.d("byteToHex", "rscvString = " + rscvString); while ( rscvString !=

byte[]a
的值为{119},这是“w”的ascii等价物,但当我使用
.toString()
将其转换为字符串时,它会给我一个奇怪的字符串。知道我做错了什么吗

byte[] a = characteristicRX.getValue();
        String rscvString = a.toString();
        Log.d("byteToHex", "rscvString = " + rscvString);
        while ( rscvString != "w" ){


尝试下面的一行将字节转换为字符并将其转换为字符串

String rscvString = String.valueOf((char) a);
String rscvString = String.valueOf((char) (a & 0xFF));

您可以在字符串构造函数中传递字节数组以获取数组的字符串对象。

字符串对象将参数
字节[]
作为重载构造函数。使用
String rscvString=新字符串(a)应该对您进行排序

不能使用布尔运算符对字符串进行测试,即!=或==。
使用
while(!(rscvString.equalsIgnoreCase(“w”)
方法将返回一个布尔值,!将强制测试为false。

检查所需的编码,并根据需要使用
新字符串(a,someEncoding)进行参数化
idiom.Edit实际上您正在数组上调用
toString
,所以打印的是对象类型和散列。上面的内容仍然有效。检查您收到的警告,它可能会说同样的话。String s=new String(a);谢谢大家!现在开始工作:)谢谢!字符串现在具有正确的值!rscvString现在是“w”,但不知何故,程序仍然进入while(rscvString!=“w”)循环。。你知道这次出了什么问题吗?你不能用
布尔
运算符来测试字符串,比如
=
==
。使用
while(!(rscvString.equalsIgnoreCase(“w”)
方法将返回一个
布尔值
,!将强制测试为false。忘记提到
等于()也可以使用
,但这会导致它区分大小写。使用
布尔
运算符进行测试会比较内存位置,而不是值。谢谢!它现在的工作方式是:)已编辑,因此两个答案都在一起。再次感谢!