那只是具体编码方式的不同
具体的每一个字符编码方式不一样
length是说这个数组里面有多少个元素
而不是说占用了多少空间

解决方案 »

  1.   

    一共只有四个字符,数组的长度都是4.与"byte是8位的,char是16位的"无关.
      

  2.   

    难道String转换成byte[]时和转成char[]不是按照位数转的吗?都是4个元素的话,每个元素存放什么呢?特别是byte[]中
      

  3.   

    byte[]中是a,l,i,n对应的ascii
      

  4.   

    为什么不是Unicode码?
    char[] ch = st.toCharArray();
    byte[] by = st.getBytes();
    //长度为什么会一样?
    System.out.println("" + ch[0]);
    System.out.println("" + (char)by[0]);outPut:
    a
    aascii正好能放在8位里面,要是16位的Unicode,byte类型就放不下了啊
      

  5.   

    你们没明白我的意思啊:
    String st = "我是谁";
    char[] ch = st.toCharArray();
    byte[] by = st.getBytes();
    System.out.println("" + ch.length);
    System.out.println("" + by.length);
    output:
    3
    6难道跟acsii重复的字符都用8位的表示,不重复的象汉字用16位unicode表示??好奇怪啊
      

  6.   

    双字节编码的字符
    都要用两个byte啊
    所以如果你把by数组一个一个输出来
    那会发现不是中文~~~~
    因为要两个才能出来一个中文
      

  7.   

    可是在java里英文字母也是用unicode表示的啊?难道是单字节的?