今天在学习rabbitmq的时候,消费端转换出的消息总是类描述,查了一下,是因为解析byte的时候用了.toString,应该用new String
byte[]字节数组的toString()获得的字符串,和使用new String(byte[]) 构造一个新的字符串。得出的结果不同。
Java对象都继承于Object,Object中提供了toString方法,用于简单返回该类的类签名。在Java中,数组也可以看作是一种对象,显然byte[]也是一种继承与Object的对象,并且它没有重写Object的toString方法,因此使用byte[]的toString返回的字符串,仅仅是byte[]的类签名,而不是对应的值。
改为使用new String()构造方法,将byte[]转换为字符串,得到的就会是一个根据字节数组内容构造的字符串。
总结:new String()一般使用字符转码的时候,例如byte[]数组的时候
toString()将对象打印的时候使用