智慧大石
public String trim() {int len = count; //你可以理解为这个字符串变成char数组以后的长度int st = 0;int off = offset; /* avoid getfield opcode */ //当做是0char[] val = value; /* avoid getfield opcode */ //由这个字符串变成的字符数组while ((st < len) && (val[off + st] <= ' ')) { //var[off+st]其实是拿到这个数组的首字符,由首字符和‘ ’的ascii码比较,如果<=就继续下一个字符比较,如果>了就停止比较;最后st会拿到第一个不是 ‘ ‘字符的下标st++;}//下面这个逻辑和上面一样,其实拿到就是一个最后一个字符不是’ ‘的下标。while ((st < len) && (val[off + len - 1] <= ' ')) {len--;}//最后返回的是截取这个字符串中下标从st开始到len结束的一个字符串。return ((st > 0) || (len < count)) ? substring(st, len) : this;}