System.out.println(xxx)里面可以放任意的类型,并能打印出来,当然是指不抱错前提下,因为值都是转型为Object后再打印的。
public void println(Object x) { String s = String.valueOf(x); synchronized (this) { print(s); newLine(); } }
/*里面还加了同步synchronized,防止打印时值发生了变化而产生奇怪的事情*/
String.trim()
public String trim() {
int len = value.length;
int st = 0;
char[] val = value; /* avoid getfield opcode */
while ((st < len) && (val[st] <= ' ')) {
st++;
}
while ((st < len) && (val[len - 1] <= ' ')) {
len--;
}
return ((st > 0) || (len < value.length)) ? substring(st, len) : this;
}
不算严格意义上的清除全部空格,只局限于开头和结尾。
eg: 测试类
public String learnTrim(String s){
int len = s.length();
int st = 0;
char[] val = s.toCharArray(); /* avoid getfield opcode */
while ((st < len) && (val[st] <= ' ')) {
st++;
System.out.println("st "+st);
}
while ((st < len) && (val[len - 1] <= ' ')) {
len--;
System.out.println("len "+len);
}
return ((st > 0) || (len < s.length())) ? s.substring(st, len) : String.valueOf(this);
}
public static void main(String[] args){
Regex regex=new Regex();
System.out.println(regex.learnTrim(" \t \n 12 45 12 78 78 45 13 "));
首先是第一个循环,<=" "清除掉了\t \n 之类的空白字符,当遇上12时,循环终止。
第二个循环,················,当遇上13时,循环终止。
而其中的空格则不做任何处理,若需更细致的处理,可使用.replaceAll()。若需要提取数组,可用String.spilt("regex")再转为数组形式。
return语句是三元操作符,若未检测到任何的空白字符,则输出this即String s