JAVA方法参数传递详解
来源:互联网 发布:网络虚拟技术 编辑:程序博客网 时间:2024/06/05 15:00
一看标题就知道本博文要讲的啥,废话不多说,先上代码
public class Test{public static void change(int a,int b){int t;t=a;a=b;b=t;System.out.println("change里a值"+a+"change里b值"+b);}public static void main(String[] args){ int a = 2; int b=3;change(a,b);System.out.println("change后的a值"+a+"change后的b值"+b);}}
点击运行后我们看到这样的输出结果:
change里a值3change里b值2
change后的a值2change后的b值3
我们再来看看下面的代码
class TestData{public int a;public int b;}public class Test{public static void change(TestData td){int t;t=td.a;td.a=td.b;td.b=t;System.out.println("change里a值"+td.a+"change里b值"+td.b);}public static void main(String[] args){TestData td =new TestData(); td.a = 2; td.b=3;change(td);System.out.println("change后的a值"+td.a+"change后的b值"+td.b);}}我们可以看到这样的输出结果:
change里a值3change里b值2
change后的a值3change后的b值2
为什么两次的输出结果不一样?
我们首先要知道的是JAVA方法参数传递的时候并不是真的把变量里的值传给形参,而是把变量的复制值传给形参,所以第一个传给change()方法的是形参,实质的变量还是没变。
再来看第二个例子,我们在main方法里面新建了一个对象TestData,并用td变量来指向这个对象,当给a,b赋值的时候,td指向TestData对象里的a,b。执行change方法后,将td的值传给change形参td,从而导致change保存了这个形参。说到底都是td指向同一个对象,只是要注意的是change里面的td是一个复制品,所以最终输出的会是与第一个不一样的结果。我们可以在第二个例子的change方法里面加入:td=null;这个语句,然后再输出时,将会看到提示空指针错误,验证了传入TestData的实质上是td的复制品。
2 0
- JAVA方法参数传递详解
- Java参数传递详解
- java方法参数传递
- Java方法参数传递
- Java 方法参数传递
- Java方法参数传递
- Java方法参数传递
- java方法参数传递
- 详解java中给方法传递参数的两种方式:按值传递,引用传递
- Java 的参数传递详解
- Java 方法中参数传递
- java方法参数传递问题
- java 方法的参数传递
- Java方法的参数传递
- Java方法传递参数说明
- Java 方法参数 值传递
- Java--方法参数的传递
- Java方法的参数传递
- python抓取js加载的数据(phantomjs)
- Android图表库MPAndroidChart(一)——了解他的本质,方能得心应手
- 属性动画ObjectAnimator
- memcache实现消息队列实例
- Java实现HuffmanTree
- JAVA方法参数传递详解
- 在同一台物理机上配置多个ActiveMq主程序
- iOS如何实现录音
- static关键字的用法
- Spring 3整合Quartz 2实现定时任务三:动态暂停 恢复 修改和删除任务
- openlayer绘图时禁止移动地图的两种方式
- memcache压测
- 表变量与临时表的区别和联系
- 一般现在常见的网站攻击方式