Java中如何正确的将byte[]数组转化为String类型?

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java中如何正确的将byte[]数组转化为String类型?
很多⼈在编程时,总是喜欢⽤⼀下⽅法将数组转为字符串:(a为byte数组)
String s=a.toString();
可是每次返回的时候,新⼿看来返回的结果是乱码,⽐如说我,写RSA算法时,没有注意,就以为是解密出来的乱码(哈哈哈),但其实[B@1b6d3586 为@+hash值,这个时候要知道对于返回⼀个String对象,new⼀个是基本上不会错的,测试代码如下:
1 Scanner scan=new Scanner(System.in);
2 String s="ghhhh";
3byte[]a=s.getBytes();
4 String s1=a.toString();
5 String s2=new String(a);
6 System.out.println("s1:"+s1);
7 System.out.println("s2:"+s2);
测试结果:
1 s1:[B@1b6d3586
2 s2:ghhhh
可以看到s1所对应的⽅法只是返回hash值,⽽s2才真正返回了a的实体值。

这是因为, ...toString()返回的确实是hash值,介绍如下:
Returns a string representation of the object. In general, the toString method returns a string that "textually represents" this object. The result should be a concise but informative representation that is easy for a person to read. It is recommended that all subclasses override this method.
The toString method for class Object returns a string consisting of the name of the class of which the object is an instance, the at-sign character `@', and the unsigned hexadecimal representation of the hash code of the object. In other words, this method returns a string equal to the value of:
getClass().getName() + '@' + Integer.toHexString(hashCode())
⼤体意思就是类Object的toString⽅法返回⼀个字符串,该字符串由对象为实例的类的名称、符号符号符
号“@”和对象哈希代码的⽆符号⼗六进制表⽰组成。

换句话说,此⽅法返回⼀个字符串。

因此,下次不要⽤错⽅法咯!。

相关文档
最新文档