这是我尝试过的;
public String frontBack(String str) {
char begin = str.charAt(0);
char end = str.charAt(str.length()-1);
return begin+str.substring(1,str.length()-1)+end;
}
我以为它会失败,因为开始和结束是字符,但它没有。这怎么可能呢?有人能解释一下吗?谢谢!
Java的'+'操作符也用作连接操作符。它可以连接原语和对象,并返回一个字符串作为其结果。
下面的解释假设您熟悉Java的包装器类。如果你对它们不熟悉,请读一读。
Java的'+'操作符将语句中使用的所有基本数据类型转换为其等效的Wrapper类,并在这些实例上调用toString()方法,并使用该结果,该结果是表达式中的字符串。
示例:在Java中,像System.out.println( 3 + " Four " + 'C' );
这样的语句最终创建了一个内容为"3 Four C"
的字符串。
在上面的语句中,3是一个原始int变量。"4"是一个String对象,而"C"是一个基本字符变量。
在'+' concat操作中,3被转换为其相应的Wrapper类-> Integer。然后调用toString()方法。输出为字符串3,即"3"" Four "已经是一个字符串,不需要进一步处理。'C'被转换为字符包装类,toString()方法返回字符串"C"。
最后,这三个加起来就得到" 3four C"
总结:
- 如果在'+'操作符中使用了原语,则将其转换为其Wrapper类,然后对其调用toString()方法,结果将用于追加。
- 如果使用的不是String对象,则调用其toString()方法,并使用其结果进行追加。
- 如果调用String,那么,没有太多要做的事情,字符串本身被用于追加。