我做了以下实验:
public static void main(String[] args) throws Exception {
String aaa="我";
System.out.print(aaa.getBytes("utf-8")); //输出 :[B@35ce36
}public static void main(String[] args) throws Exception {
String aaa="我";
System.out.print(aaa.getBytes("gbk")); //输出 : [B@35ce36
}
public static void main(String[] args) throws Exception {
String aaa="我";
System.out.print(aaa.getBytes("gbk"));
System.out.print(aaa.getBytes("utf8"));
//输出: [B@35ce36[B@757aef
}
我想请问下。。同样是输出为什么改变getBute的编码方式 分别输出的情况下~输出结果都是一样的。。
但是我把他们放一起 输出结果却有不一样了。。怪事~
public static void main(String[] args) throws Exception {
String aaa="我";
System.out.print(aaa.getBytes("utf-8")); //输出 :[B@35ce36
}public static void main(String[] args) throws Exception {
String aaa="我";
System.out.print(aaa.getBytes("gbk")); //输出 : [B@35ce36
}
public static void main(String[] args) throws Exception {
String aaa="我";
System.out.print(aaa.getBytes("gbk"));
System.out.print(aaa.getBytes("utf8"));
//输出: [B@35ce36[B@757aef
}
我想请问下。。同样是输出为什么改变getBute的编码方式 分别输出的情况下~输出结果都是一样的。。
但是我把他们放一起 输出结果却有不一样了。。怪事~
String aaa="我";
System.out.println(aaa.getBytes("gbk"));
System.out.println(aaa.getBytes("gbk"));
//输出:[B@35ce36
// [B@757aef两次一样的代码输出的却不一样。。怪事。。
我的对象名字也没叫:B啊 ..
正解取得的是一个byte数组,byte数组是一个对象,所以打印的是内存地址
需要遍历才能看到内容
byte[] buffer = str.getBytes("GBK");
for (byte b:buffer)
{
System.out.println(b);
}
aaa.getBytes("uft-8")
返回处的东西都一样。
那意义是什么啊。。?
你可以用IDE step in一步步的跟一下,其执行过程,不像你看到的表面那么简单。涉及的类还有StringEncoding 以及他的内部类StringEncoder,并有ThreadLocal变量参与。好好看看理解一下吧。呵呵。即考你Java的基本知识也考你对于Eclipse等IDE的Debug技能。
再多的我就不说了,自个儿试试。呵呵。