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

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

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<<

byte1<<<[B@192d342

str1<<

byte2<<<[B@6b97fd

str2<<

想请教为什么两个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,其实就是其虚拟机地址

所以这个结果也就是顺理成章了.

相关文档
最新文档