请教关于String.getBytes
我做了以下实验:
Java code
public static void main(String[] args) throws Exception {
String aaa="我";
System.out.print(aaa.getBytes("utf-8")); //输出 :[B@35ce36
}
Java code
public static void main(String[] args) throws Exception {
String aaa="我";
System.out.print(aaa.getBytes("gbk")); //输出 : [B@35ce36
}
Java code
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的编码方式 分别输出的情况下~输出结果都是一样的。。
但是我把他们放一起 输出结果却有不一样了。。怪事~
------解决方案--------------------唉...那个内存刚好都从那里分配吧
------解决方案--------------------不明白呀,顶了
------解决方案--------------------aaa.getBytes("gbk")返回的是一个对象,输出的toString()默认形式是A@B,A是对象名称,B是内存地址
------解决方案--------------------
------解决方案--------------------每次调用getBytes方法都要为数组在堆区分配内存吧.而你前两个实验应该说明分配内存时刚好在同一个地址,当你同时调用两个的时候虽然内容一样,但是分配了两个不同的内存块,地址也就不同了,所以输出两个不同地址
------解决方案--------------------内存地址问题。。