飞翔的起点

从这里出发

导航

<2009年9月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

统计

常用链接

留言簿(5)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜

byte数组和String之间的转化

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

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

例如下面一个例子:

import java.io.UnsupportedEncodingException;

public class test{
 public static void main(String g[]) {
  String s = "12345abcd";
  byte b[] = s.getBytes();
  String t = b.toString();

  System.out.println(t);

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

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

public class test{
 public static void main(String g[]) {
  String s = "12345abcd";
  byte b[] = s.getBytes();
  try {
   String t = new String(b);
   System.out.print(t);
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}

引用:
String   str   =   "String"; 
          byte[]   byte1   =   str.getBytes(); 
          String   str1   =   new   String(byte1); 
          byte[]   byte2   =   str1.getBytes(); 
          String   str2   =   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输出的不一样呢? 
 

String   str   =   "String"; 
          byte[]   byte1   =   str.getBytes(); 
          String   str1   =   new   String(byte1); 
          byte[]   byte2   =   str1.getBytes(); 
  ---------- 
  注意byte1是str得到的byte数组,而byte2是另一个字符串str1得到的数组 
  他们本身也是两个对象  
   
  直接打印实际上调用的是toString()方法,而toString()的默认实现是打印对象类型+hashCode()  
  [B表示byte数组  @表示之后的是地址  后面跟着的是hashCode,其实就是其虚拟机地址  
  

posted on 2009-09-23 14:19 forgood 阅读(3051) 评论(0)  编辑  收藏 所属分类: java


只有注册用户登录后才能发表评论。


网站导航: