日期:2014-05-20  浏览次数:20633 次

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