如下是一个将字符串倒转的程序。。
为什么将String赋null值后和别的字符串相加,null仍旧在String中。?
比如读入实参abc。它返回的是nullcba,null不是空值吗,怎么这里有普通字符串的效果。。?
另外,因为String是final的。每次连接其他字符串都要重新分配空间,
所以一旦字符串足够长,函数里String的累加貌似会浪费很多空间。请问能怎样改一下?
谢谢大家!!!!~~~public class Test {
public static void main(String[] args) {
Test t = new Test();
System.out.println(t.reverse("I come from CSDN"));
}
public String reverse(String str) {
String re_str = null;
for (int i=str.length()-1; i>=0; i--) {
re_str += str.charAt(i);
}
return re_str;
}
}
为什么将String赋null值后和别的字符串相加,null仍旧在String中。?
比如读入实参abc。它返回的是nullcba,null不是空值吗,怎么这里有普通字符串的效果。。?
另外,因为String是final的。每次连接其他字符串都要重新分配空间,
所以一旦字符串足够长,函数里String的累加貌似会浪费很多空间。请问能怎样改一下?
谢谢大家!!!!~~~public class Test {
public static void main(String[] args) {
Test t = new Test();
System.out.println(t.reverse("I come from CSDN"));
}
public String reverse(String str) {
String re_str = null;
for (int i=str.length()-1; i>=0; i--) {
re_str += str.charAt(i);
}
return re_str;
}
}
为了避免增加内存可以使用StringBuffer来拼接
public class CsdnTest{
public static void main(String[] args){
CsdnTest t = new CsdnTest();
System.out.println(t.reverse("I come from CSDN"));
}public String reverse(String str) {
StringBuilder re_str = new StringBuilder();
for (int i=str.length()-1; i>=0; i--) {
re_str.append(str.charAt(i));
}
return re_str.toString();
}
}
哈哈。原来真有这么回事。。
6楼的哥们。。StringBuffer也有append()方法哦,它和StringBuilder有什么区别。?