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

来源:互联网 发布:生化危机4mac版 编辑:程序博客网 时间:2024/06/06 00:13

把byte转化成string,必须经过编码。 
  例如下面一个例子: 
  

importjava.io.UnsupportedEncodingException;   publicclass test{   publicstatic void main(String g[]) {   Strings = "12345abcd";   byteb[] = s.getBytes();   Stringt = b.toString();   System.out.println(t);   }   } 


  输出字符串的结果和字符串s不一样了. 
  经过以下方式转码就可以正确转换了: 
  
publicclass test{   publicstatic void main(String g[]) {   Strings = "12345abcd";   byteb[] = s.getBytes();   try{   Stringt = new String(b);   System.out.print(t);   }catch (Exception e) {   e.printStackTrace();   }   }   } 

 Stringstr = "String";   byte[]byte1 = str.getBytes();   Stringstr1 = new String(byte1);   byte[]byte2 = str1.getBytes();   Stringstr2 = new String(byte2);   System.out.println("str<<<"+ str);   System.out.println("byte1<<<"+ byte1);   System.out.println("str1<<<"+ str1);   System.out.println("byte2<<<"+ byte2);   System.out.println("str2<<<"+ str2); 


 
  ------------------------------------- 
  输出结果 
  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,其实就是其虚拟机地址 
  所以这个结果也就是顺理成章了.

原创粉丝点击