public String trim() {
int len = count;
int st = 0;
int off = offset; /* avoid getfield opcode */
char[] val = value; /* avoid getfield opcode */ while ((st < len) && (val[off + st] <= ' ')) {
st++;
}
while ((st < len) && (val[off + len - 1] <= ' ')) {
len--;
}
return ((st > 0) || (len < count)) ? substring(st, len) : this;
}val[off + st] <= ' '为什么是这个条件?
‘ ’==32
那比32小的char值应该不少的吧?

解决方案 »

  1.   

    因为ASCII值小于等于32的,都算空白字符
      

  2.   

    那如果str=“  ss  ss  ”的话呢?
    看那个判断
    中间的空白也要算进st++里面?
      

  3.   

    那个判断的是char 又不是String
      

  4.   

    不算的,while啊,只要遇到一个不是空白符不就跳出了么
      

  5.   

            while ((st < len) && (val[off + st] <= ' ')) {
                st++;
            }
    这一段是取首个非空白字符的下标        while ((st < len) && (val[off + len - 1] <= ' ')) {
                len--;
            }
    这段是取从首个非空白字符到最后一个非空白字符的长度楼主这是什么版本的source,感觉与我的不一样