//去除字符串两端的空格
//这个思路很经典!
public String trim() {
int len = value.length; //尾指针
int st = 0; //头指针
char[] val = value; /* avoid getfield opcode */
//st<len 保证头指针一直在尾指针之前
while ((st < len) && (val[st] <= ' ')) { //如果开始为空格
st++; //头指针向后移动
}
while ((st < len) && (val[len - 1] <= ' ')) { //如果末尾为空格
len--; //尾指针向前移动
}
return ((st > 0) || (len < value.length)) ? substring(st, len) : this; //String类中用了很多三元运算符
}
//将此字符串转换为一个新的字符数组。
//这里可以看到直接使用了System.arraycopy()方法
public char[] toCharArray() {
// Cannot use Arrays.copyOf because of class initialization order issues
char result[] = new char[value.length];
System.arraycopy(value, 0, result, 0, value.length);
return result;
}
//使用指定的格式字符串和参数返回一个格式化字符串。
//注意:这里有可变参数。实际上可变参数是一个数组。
public static String format(String format, Object... args) {
return new Formatter().format(format, args).toString();
}