java吧 关注:1,232,446贴子:12,696,468
  • 9回复贴,共1

一段程序看不懂,求大神给解释一下啊

只看楼主收藏回复

public class C {
public static void main(String[] args)
{
int aa=100;
String b="100";
StringBuffer sb = new StringBuffer("100");
C c=new C();
c.A(aa, b, sb);
System.out.println(aa);
System.out.println(b);
System.out.println(sb);
}
public void A(int a,String b,StringBuffer sb){
a=a+1;
b+="1";
sb=sb.append("1");
}
}
输出结果是100
100
1001
不明白为啥会出现这个结果呢?


IP属地:广东1楼2014-08-21 23:26回复
    挽一下,不要沉


    IP属地:广东2楼2014-08-21 23:27
    回复
      a是int类型 加1直接运算,b字符串 加 字符串1 等于追加。 c 和b同理是追加但是是个内存对象效率比较快


      IP属地:广东来自Android客户端3楼2014-08-21 23:31
      回复
        同求解


        IP属地:上海来自Android客户端4楼2014-08-21 23:40
        回复
          把栈和堆的图画出来就知道了


          IP属地:上海来自Android客户端5楼2014-08-22 00:03
          回复
            注意变量作用域,还有理解一下string和stringBuffer的区别吧


            来自Android客户端6楼2014-08-22 00:44
            回复
              字符串是引用类型,所以传入方法内可以被改变,


              来自手机贴吧7楼2014-08-22 00:49
              回复
                string一旦被初始化就不可以改变,stringBuilder 是一个可变长度的容器,最后tostring()变成字符串


                来自iPhone客户端8楼2014-08-22 00:50
                收起回复
                  刚好处在这个尴尬的年龄,开始关心爸妈,却不愿说出口;想多陪陪爸妈,却更贪恋坐在电脑前;知道爸妈想和自己说话,却不知道他们的话题要怎么接;看得到爸妈在变老,却仍不耐烦他们的过时。心里时时刻刻在愧疚,却依然带给他们落寞。


                  IP属地:广西来自WindowsPhone客户端9楼2014-08-22 04:40
                  回复