今天遇到上游通过消息队列传给我byte字节码,我用toString()方法转字符串接收,发现转了后是[B@90f6bfd这样的格式,瞬间懵逼,流下没技术的眼泪。
研究一番,发现字节码如果调用toString()方法,其实是调用的Object类的toString方法,返回的是他的[class name]@[hashcode] 这样格式的内存地址 ,这肯定不是我们想要的数据。而通过new String()的话是根据 parameter是一个字节数组,通过虚拟机默认编码格式,将字节数组decoder为对应的字符,这样就能返回我们想要的字符串。