如下是一个将字符串倒转的程序。。
为什么将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;
}
}

解决方案 »

  1.   

    null与String相加时会被自动转成String型,并且值为"null"
      

  2.   

    你要想实现字符串的累加,
    为了避免增加内存可以使用StringBuffer来拼接
      

  3.   

    string连接时,其他类型一般都会调用String.valueOf(...)转换,null也不例外吧对于string的一些方法,可以直接看源代码,都是容易理解的算法
      

  4.   


    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();
        }
    }
      

  5.   


    哈哈。原来真有这么回事。。
    6楼的哥们。。StringBuffer也有append()方法哦,它和StringBuilder有什么区别。?
      

  6.   

    直接看源代码就明白区别了另外可能的话,stringbuffer和stringbuilder初始化的时候,最好指定大小否则效率可能比string连接更低