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

简介: 把byte转化成string,必须经过编码。    例如下面一个例子:     importjava.io.UnsupportedEncodingException;   publicclass test{   publicstatic...

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

目录
相关文章
|
13天前
|
Java API 索引
Java基础—笔记—String篇
本文介绍了Java中的`String`类、包的管理和API文档的使用。包用于分类管理Java程序,同包下类无需导包,不同包需导入。使用API时,可按类名搜索、查看包、介绍、构造器和方法。方法命名能暗示其功能,注意参数和返回值。`String`创建有两种方式:双引号创建(常量池,共享)和构造器`new`(每次新建对象)。此外,列举了`String`的常用方法,如`length()`、`charAt()`、`equals()`、`substring()`等。
15 0
|
28天前
|
Java
【Java】如果一个集合中类型是String如何使用拉姆达表达式 进行Bigdecimal类型计算?
【Java】如果一个集合中类型是String如何使用拉姆达表达式 进行Bigdecimal类型计算?
25 0
|
1月前
|
Java
Java String split()方法详细教程
Java String split()方法详细教程
22 0
|
1月前
|
安全 Java
Java StringBuffer 和 StringBuilder 类
Java StringBuffer 和 StringBuilder 类
16 0
|
1月前
|
存储 缓存 安全
【Java】Java中String不可变性的底层实现
【Java】Java中String不可变性的底层实现
14 0
|
1月前
|
Java 索引
【Java】String类常用方法总结
【Java】String类常用方法总结
20 0
|
1月前
|
SQL Java
使用java中的String类操作复杂的字符串
使用java中的String类操作复杂的字符串
9 0
|
1月前
|
存储 Java 索引
Java String类
Java String类
12 0
|
1月前
|
安全 Java 索引
Java StringBuffer 类
Java StringBuffer 类
7 0
|
1月前
|
存储 安全 Java
Java String 类
Java String 类
20 1