您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 理论文章 > JAVA里面关于byte数组和String之间的转换问题
JAVA里面关于byte数组和String之间的转换问题把byte转化成string,必须经过编码。例如下面一个例子:importjava.io.UnsupportedEncodingException;publicclasstest{publicstaticvoidmain(Stringg[]){Strings=12345abcd;byteb[]=s.getBytes();Stringt=b.toString();System.out.println(t);}}输出字符串的结果和字符串s不一样了.经过以下方式转码就可以正确转换了:publicclasstest{publicstaticvoidmain(Stringg[]){Strings=12345abcd;byteb[]=s.getBytes();try{Stringt=newString(b);System.out.print(t);}catch(Exceptione){e.printStackTrace();}}}Stringstr=String;byte[]byte1=str.getBytes();Stringstr1=newString(byte1);byte[]byte2=str1.getBytes();Stringstr2=newString(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);-------------------------------------输出结果strStringbyte1[B@192d342str1Stringbyte2[B@6b97fdstr2String想请教为什么两个byte输出的不一样呢?Stringstr=String;byte[]byte1=str.getBytes();Stringstr1=newString(byte1);byte[]byte2=str1.getBytes();----------注意byte1是str得到的byte数组,而byte2是另一个字符串str1得到的数组他们本身也是两个对象直接打印实际上调用的是toString()方法,而toString()的默认实现是打印对象类型+hashCode()[B表示byte数组@表示之后的是地址后面跟着的是hashCode,其实就是其虚拟机地址所以这个结果也就是顺理成章了.
本文标题:JAVA里面关于byte数组和String之间的转换问题
链接地址:https://www.777doc.com/doc-2881630 .html