设为首页 加入收藏

TOP

Java按值传递还是引用传递?
2015-11-10 13:45:01 来源: 作者: 【 】 浏览:6
Tags:Java 传递 还是 引用

回顾:


Java总是采用按值调用。方法得到的是所有参数值的一个拷贝,特别的,方法不能修改传递给它的任何参数变量的内容。


方法参数共有两种类型:


查看一下的代码:


【输出结果】: 5


可以看到,这个方法执行之后,price的值并没有变化。接下来,看一下doubleva lue具体的执行过程为:


  


从上面的例子我们已经知道一个方法不能修改一个基本数据类型的参数。而对象引用作为参数就不同了。看下面的例子:


【运行结果】:


90.0


可以看出,Student实例s的内容改变了。


具体执行过程为:



首先编写一个交换两个学生的方法:


如果java对对象是采用的是引用传递,那个这个方法是可以的。那么x,y对象的分数是交换的。看下面的例子:


【运行结果】:


交换前:
a的分数:0.0--- b的分数:100.0
交换后:
a的分数:0.0--- b的分数:100.0


可以看出,两者并没有实现交换。说明引用传递的说法是不正确的。接下来一步一步看看swap调用的过程:


首先,创建两个对象:



然后,进入方法体,将对象a,b的拷贝分别赋值给x,y:



接着,交换x,y的值:



swap执行完成,x,y不再使用,回到创建时状态。?


从这个过程中可以看出,Java对对象采用的不是引用调用,实际上,对象引用进行的是值传递。


总结一下java中方法参数的使用情况:


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Java反射总结 下一篇C# DateTime结构的常用方法

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: