您的位置:首页 > 编程语言 > Java开发

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

2013-01-11 10:10 741 查看
JAVA里面关于byte数组和String之间的转换问题
  把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,其实就是其虚拟机地址
  所以这个结果也就是顺理成章了.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: