lassTest1{ publicstaticvoidmain(String[]args){ intn=3; ("Beforechange,n="+n); changeData(n); ("AfterchangeData(n),n="+n); } publicstaticvoidchangeData(intnn){ n=10; }}基本类型作为参数传递时,是传递值的拷贝,无论你怎么改变这个拷贝,原值是不会改变的,输出的结果证明了这一点:Beforechange,n=3AfterchangeData(n),n=lassTest2{ publicstaticvoidmain(String[]args){ StringBuffersb=newStringBuffer("Hello"); ("Beforechange,sb="+sb); changeData(sb); ("AfterchangeData(n),sb="+sb); } publicstaticvoidchangeData(StringBufferstrBuf){ ("World!"); }}先看输出结果:Beforechange,sb=HelloAfterchangeData(n),sb=HelloWorld!从结果来看,sb的值被改变了,那么是不是可以说:对象作为参数传递时,是把对象的引用传递过去,如果引用在方法内被改变了,那么原对象也跟着改变。lassTest3{ publicstaticvoidmain(String[]args){ StringBuffersb=newStringBuffer("Hello"); ("Beforechange,sb="+sb); changeData(sb); ("AfterchangeData(n),sb="+sb); } publicstaticvoidchangeData(StringBufferstrBuf){ strBuf=newStringBuffer("Hi"); ("World!"); }}运行一下这个程序,你会发现结果是这样的:Beforechange,sb=HelloAfterchangeData(n),sb=Hellojava参数传递先看Test2这个程序:StringBuffersb=newStringBuffer("Hello");这一句执行完后,就会在内存的堆里生成一个sb对象,请看图1:如图1所示,sb是一个引用,里面存放的是一个地址“***@3a”(这个“***@3a”是我举的代表内存地址的例子,你只需知道是个内存地址就行了),而这个地址正是“Hello”
java参数传递 来自淘豆网m.daumloan.com转载请标明出处.