java中方法的参数传递机制(值传递还是引用传递)
2024-10-09 02:27:33
看到一个java面试题:
问:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
答:是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是该对象的引用一个副本。指向同一个对象,对象的内容可以在被调用的方法中改变,但对象的引用(不是引用的副本)是永远不会改变的。
以下是从其他文章里转的,只为加深理解
public class TempTest {
private void test1(A a){
a.age = 20;
System.out.println("test1方法中的age="+a.age);
}
public static void main(String[] args) {
TempTest t = new TempTest();
A a = new A();
a.age = 10;
t.test1(a);
System.out.println(”main方法中的age=”+a.age);
}
}
class A{
public int age = 0;
}
结果是
test1方法中的age=20
main方法中的age=20
说明:在执行第10步t.test1(a); 时,main()中的变量a和test1中的变量a指向同一个地址,在test1方法中并没有改变a的地址而是改变了属性的值,所以结果是main方法中的a的值发生了变化,但是这不是引用传递。除非在test1方法中new一个新的对象,把这个新的地址赋给a,则为引用传递,其结果中a的值不会发生变化。
最新文章
- android radiogroup样式(设置切换背景与文字颜色)
- spring-boot-starter-amqp踩坑记
- Atiti  attilax主要成果与解决方案与案例rsm版 v4
- 【转】aspx与aspx.cs的关系
- Unity碰撞器触发关系测试
- 使用Spring的jdbcTemplate进一步简化JDBC操作
- Java基础之线程——使用执行器(UsingExecutors)
- [Effective Java]第九章 异常
- 数据持久化-Plist文件写入
- C# chart绑定数据的方式整理
- 更改OS序列号(slmgr)
- sql 不同server間寫入數據
- poj 1258 Agri-Net【最小生成树(prime算法)】
- Loggerly技术架构
- validator验证
- JavaWeb:JSTL
- struts2标签库----数据标签详解
- Angular5 路由传参的3种方法
- temp 和 tmp 文件
- 网络流板子/费用流板子 2018南京I题+2016青岛G题