}
这个方法非常重要,是去掉前后空格的方法。首先定义变量len,其值为本字符串的长度。定义变量st,其初始值为0,用来记录下标。定义变量val,引用本字符串的value。
进入第一个while循环,判断如果下标一直小于长度,且下标所在的字符元素是空字符,则下标自增。
第二个while循环判断如果下标一直小于长度,且长度减一也就是当前最后一个字符元素是空字符,则长度自减。
最后判断下标是否大于零或长度是否小于原字符串的长度,换句话说就是发生了截取与否,发生了就调用substring方法 ,否则返回原字符串。
public String toString() {
return this;
}
这个方法很简单,就是返回本对象。
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;
}
这个方法就是将本对象的value拷贝到一个新的char数组中,完完全全的拷贝。
public static String format(String format, Object... args) {
return new Formatter().format(format, args).toString();
}
这个方法就是将后面的无数量限制的参数按照第一个参数format规定的格式打印出来,很类似c语言的printf方法里的相关实现。举个例子
System.out.printf("年-月-日格式:%tF%n", new Date());就是按照年-月-日格式打印出new Date()
public static String format(Locale l, String format, Object... args) {
return new Formatter(l).format(format, args).toString();
}
这个方法和上面类似,就是需要手动输入locale,而上面的方法则采用默认的locale。
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
这个方法先判断参数是否为空,如果不为空则调用参数的toString方法。
public static String valueOf(char data[]) {
return new String(data);
}
这个方法的参数是一个char数组,将这个char数组传入String的构造方法中,返回一个新的String对象。
public static String valueOf(char data[], int offset, int count) {
return new String(data, offset, count);
}
这个方法和上一个方法类似,只是增加了offset和count参数,将char数组传入String的构造方法中,同时传入offset和count进行截取,最后返回新的String对象。
public static String valueOf(boolean b) {
return b ? "true" : "false";
}
public static String valueOf(char c) {
char data[] = {c};
return new String(data, true);
}
public static String valueOf(int i) {
return Integer.toString(i);
}
public static String valueOf(long l) {
return Long.toString(l);
}
public static String valueOf(float f) {
return Float.toString(f);
}
public static String valueOf(double d) {
return Double.toString(d);
}
这些方法就是将这些数据类型返回成String,不细讲了很简单。
至此,String类讲解完毕