JAVA里面关于byte数组和String之间的转换问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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,其实就是其虚拟机地址 所以这个结果也就是顺理成章了.