length()方法返回的是一个基于16位unicode字符的字符串长度.

解决方案 »

  1.   

    java采用的是unicode编码,处理的机制是有双字节的字符java就把每个字符都按双字节编码,如果都是单字节的字符就按单字节编码。
        判断String里是否包括有中文字符可以用这个方法
    ...
    if(s1.getBytes().length==s1.length())
    {
    //如果两个长度相等,说明s1里无汉字
    }else{
    //如果两个长度不相等,就说明s1里面有汉字
    }
    ...
      

  2.   

    你测试的长度是字符的长度,每个字符是两个字节
    所以输出的长度是2、4、6
    这是char和byte之间的区别
      

  3.   

    if(s1.getBytes().length==s1.length())
    这个判断方法是欠妥的,不单单只有汉字是说字节的,日文也是
    如果String s = "アプリケーション" 的话,一样会执行if里的语句
    所以个人认为,没有什么很好的方法判断String类型里是否有汉字
      

  4.   

    Java里面的char是采用unicode编码方式,每个char占两个字节,不管是简单的字符(如a)还是汉字,都是两个字节。而
    public int length()
    Returns the length of this string. The length is equal to the number of 16-bit Unicode characters in the stringlength()返回的是字符串中16位unicode字符的个数,所以你得出来的答案就是这个原因了。至于如何判断汉字,除了kiss0931(年终奖金250块--好数目)的方法,我不会别的
      

  5.   

    不错 enrico(小甭) 是牛人!!!
      

  6.   

    提示一下吧用Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS这个可以判断双字节的字符,甚至可以区分双字节标点和字符