天天看点

深入 JAVA里面关于byte数组和String之间的转换问题

把byte转化成string,必须经过编码。 

  例如下面一个例子: 

  

  输出字符串的结果和字符串s不一样了. 

  经过以下方式转码就可以正确转换了: 

 

  ------------------------------------- 

  输出结果 

  str<<<String 

  byte1<<<[B@192d342 

  str1<<<String 

  byte2<<<[B@6b97fd 

  str2<<<String 

  想请教为什么两个byte输出的不一样呢? 

  Stringstr = "String"; 

  byte[]byte1 = str.getBytes(); 

  Stringstr1 = new String(byte1); 

  byte[]byte2 = str1.getBytes(); 

  ---------- 

  注意byte1是str得到的byte数组,而byte2是另一个字符串str1得到的数组 

  他们本身也是两个对象 

  直接打印实际上调用的是toString()方法,而toString()的默认实现是打印对象类型+hashCode() 

  [B表示byte数组 

  @表示之后的是地址 

  后面跟着的是hashCode,其实就是其虚拟机地址 

  所以这个结果也就是顺理成章了.