程序是获取用户输入的一个字符串,然后将其逆转输出
代码:
import java.util.Scanner;
import java.util.Stack;
public class ReverseString {
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
String string = in.next();
System.out.println(reString.strResult(string));
}
}
class reString
{
public static String strResult(String str) {
Stack<Character> reverseStr = new Stack<>();
for (int i = 0; i < str.length(); i++) {
reverseStr.push(new Character(str.charAt(i)));
}
String reString = new String();//
while (!reverseStr.isEmpty()) {
reString += reverseStr.pop();
}
return reString;
}
}
当reString = new String 程序可以正常运行,如输入uyfky输出ykfyu
可是如果reString = null 的话,输入uyfky输出就成了nullykfyu 我想知道null为什么会在输出中?
见 http://blog.xiaohansong.com/2016/03/13/null-in-java-string/
编译器对字符串相加(注:也就是
+
)会进行优化,首先实例化一个StringBuilder,然后把相加的字符串按顺序append,最后调用toString返回一个String对象。
append
函数如果判断对象为null
,就会调用appendNull
,填充"null"