length返回的是字数,不是字节数。

解决方案 »

  1.   

    java中是用UNICODE来表示的,也就是说,一个字母和一个汉字是一样的长度。
      

  2.   

    我想,java使用的是Unicode编码,每个编码的长度都是统一的都是16bit即就是两个字节所以返回的应该是5个而不是10个。
      

  3.   

    length返回的是字数,所以String str="abcde";int len=str.length();返回的肯定也是5。
      

  4.   

    那我通过网络发送时,要指定发送长度,可是如果有中文的话,发送的长度就会不对?String str = "我的字符串";
    int len = str.length();我用length来指定发送长度的话,就只能发一半数据过去。
    我怎么样才能解决这个问题?
      

  5.   

    要发送的话,你就把length乘以2,java中英文也有两个字节
      

  6.   

    str.getBytes().length因为java内部采用unicode
      

  7.   

    我通过网络发送时,要指定发送长度,可是如果有中文的话,发送的长度就会不对如果接收方也是java就int len = str.length();指定好了
    因为都采用一样的编码方式unicode,是不会有问题的了
    否则的话,需要你自己判断,str里面是否有中文,就需要判断他的unicode,然后自己改变发送的长度
      

  8.   

    Java采用Unicode码。所以一个字母和一个汉字是一样的长度。
      

  9.   


    用getBytes方法获取字符串的字节数组,然后取数组的长度
      

  10.   

    amjn(神雕过儿) 不是说了吗?str.getBytes().length
      

  11.   

    String str = "我的字符串";
    int lenB = str.getBytes().length();
      

  12.   

    这个问题还没有结帖吧,我来凑个热闹,刚看到的问题。比如说有下面这么一个数组。int[] arrayOfInts = { 32, 87, 3, 589, 12, 1076,
                                  2000, 8, 622, 127 };范例代码里用到了arrayOfInts.length的方法,对于我以前的理解,这个length该是长度吧,
    我写了这句代码 int sum=arrayOfInts.length;  System.out.println("sum的值是"+ sum +"\n");
    已经知道sum值是 10。这里看来应该是表示数组成员的个数了。按照楼上几位的说法, 好像不大对吧,我觉得可能JAVA比较聪明,会按间隔符号判断。要么就是arrayofInt的作用吧?我不知道到哪里去找有关arrayofInt等的方法,我现在用的是最低的版本jdk1.1.只会用javac、java等命令,不知道哪里有帮助?可能要下载一下最新版本就好了吧,sun官方网站奇慢,可能是我自己的网络有问题。
      

  13.   

    呵呵,书后面有答案了,上面说“arrayofInt.length”函数用来取得数组中的元素数目。