当前位置: 代码迷 >> J2SE >> 请问关于String.getBytes
  详细解决方案

请问关于String.getBytes

热度:253   发布时间:2016-04-24 12:48:12.0
请教关于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是内存地址
------解决方案--------------------
探讨
aaa.getBytes("gbk")返回的是一个对象,输出的toString()默认形式是A@B,A是对象名称,B是内存地址

------解决方案--------------------
每次调用getBytes方法都要为数组在堆区分配内存吧.而你前两个实验应该说明分配内存时刚好在同一个地址,当你同时调用两个的时候虽然内容一样,但是分配了两个不同的内存块,地址也就不同了,所以输出两个不同地址
------解决方案--------------------
内存地址问题。。
  相关解决方案