int ic=new String("a").getBytes().length; 为什么得1,java不是unicode的吗,应该得2吧?

解决方案 »

  1.   

    .length得到的是字符串的长度啊."a"这个字符串不就一个字符吗?那长度就是1.
    这与它占几个字节没有关系.长度就是指就是几个字符
      

  2.   

    对了.说.length得到的有点不确切.
    length是个属性,不是方法.
      

  3.   

    数组里面length是属性!
    难道String里面也是属性吗?
      

  4.   

    byte[] b=new String("a").getBytes();int i=b.length;i得值应该是几?
      

  5.   

    getbyte是用你机器默认的编码方式对java内部的ucs-2字符串进行解码所得到的byte
    所以这个得到的byte不是unicode编码的字节,而是你机器平台的默认编码方式对应的字节
    比如GBK或者latin1
      

  6.   

    String 是一个特殊的类呀,是类怎么会没有方法呢?
    奇怪...
      

  7.   

    getbyte是用你机器默认的编码方式对java内部的ucs-2字符串进行解码所得到的byte
    所以这个得到的byte不是unicode编码的字节,而是你机器平台的默认编码方式对应的字节
    比如GBK或者latin1
    ==========================
    明白了,string.getbyte()是返回本机默认编码方式的字节。string.getbyte("unicode")是返回unicode编码方式的字节。我感觉,java这个地方做的不好,这个getbyte不应该有2个声明一个就够了 getbyte(string charset=常量) 默认是本机就行了。现在的方式搞得很胡涂。
      

  8.   

    唉,刚开始用Java做东西,难道又要开始研究一个新的语言的各个方法的细节?