看到一个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的值不会发生变化。

最新文章

  1. android radiogroup样式(设置切换背景与文字颜色)
  2. spring-boot-starter-amqp踩坑记
  3. Atiti  attilax主要成果与解决方案与案例rsm版 v4
  4. 【转】aspx与aspx.cs的关系
  5. Unity碰撞器触发关系测试
  6. 使用Spring的jdbcTemplate进一步简化JDBC操作
  7. Java基础之线程——使用执行器(UsingExecutors)
  8. [Effective Java]第九章 异常
  9. 数据持久化-Plist文件写入
  10. C# chart绑定数据的方式整理
  11. 更改OS序列号(slmgr)
  12. sql 不同server間寫入數據
  13. poj 1258 Agri-Net【最小生成树(prime算法)】
  14. Loggerly技术架构
  15. validator验证
  16. JavaWeb:JSTL
  17. struts2标签库----数据标签详解
  18. Angular5 路由传参的3种方法
  19. temp 和 tmp 文件
  20. 网络流板子/费用流板子 2018南京I题+2016青岛G题

热门文章

  1. shellinabox安装
  2. Hello,HTML 到 HTML5
  3. nssstring 转换大小写
  4. ios学习笔记01
  5. LCA和RMQ
  6. java中DriverManager跟DataSource获取getConnection有什么不同?
  7. 随机删除数据库N条记录
  8. 与PostgreSQL相关的工具
  9. Uva 11538 - Chess Queen
  10. 位置式PID与增量式PID算法