对象引用传递分析

类本身属于引用传递类型,既然是引用传递类型,那么就牵扯到内存的引用传递

所谓的引用传递的本质:同一块堆内存空间可以被不同的栈内存所指向,也可以更换指向。
class Person{
int age;
String name; public void intorduce() {
System.out.println("age= "+age+" name= "+name);
}
}
public class xxx {
public static void main(String[] args) {
Person per1 = new Person();
per1.age=17;
per1.name="sakura";
Person per2 = per1;//引用传递
per2.age=20;
per1.intorduce();
}
}

一个堆内存被两个栈内存所指向

per2.age=20;

就好比 一个人 有大名 高上 和小名 小高

高上被咬伤 小高肯定也受伤了

这个时候的引用传递是直接在主方法之中定义的,也可以通过方法实现引用传递处理。

class Person{
int age;
String name; public void intorduce() {
System.out.println("age= "+age+" name= "+name);
}
}
public class xxx {
public static void main(String[] args) {
Person per = new Person();
per.age=17;
per.name="sakura";
change(per);
per.intorduce();
}
public static void change(Person person) {
person.age = 40;
}
}

与之前的差别最大的地方在于,此时的程序是将Person类的实例化对象(内存地址(数值))传递到了change()方法之中

由于我们传递的是一个Person类型,那么change()方法接收的也是Person类型。



引用传递可以发生在方法上,这个时候一定要观察方法的参数类型,同时也要观察方法的执行过程。

最新文章

  1. 手机端页面自适应之rem布局
  2. mina通信 demo
  3. tornado 学习笔记5 构建Tornado网站应用
  4. mybatis-java1234一
  5. android中将EditText改成不可编辑的状态
  6. 【转】android应用程序的安装方式与原理
  7. 关于OOM那些事儿
  8. 超详细cordova环境配置(windows)及实例
  9. myeclipse10 将一个java工程合并到web工程
  10. BZOJ3792: 跑步
  11. HttpHandler与HttpModule及实现文件下载
  12. HDU 5416 CRB and Tree
  13. Ansible二三事
  14. Java中遍历Map对象的方法
  15. Ext.grid.EditorGridPanel联动设置单元格是否可以编辑和背景色
  16. SQLServer数据库增删改查
  17. Centos7上搭建ftp服务器
  18. 安装过redis集群,重新做集群办法:
  19. ESXi安装时遇到不识别的硬件的处理
  20. MT【26】ln(1+x)的对数平均放缩

热门文章

  1. 【Python】【爬虫】爬取酷狗TOP500
  2. 每天进步一点点------Xilinx IP 内核
  3. Navicat Preminm for Linx
  4. Attribute "resultType" must be declared for element type "update" or "insert"
  5. multiprocessing 多进程实现 生产者与消费者模型JoinableQueue
  6. 主席树板子 p2104
  7. windows CMakeLists.txt
  8. linux shell 正则表达式详解
  9. 每天进步一点点------基础实验_13_有限状态机 :Mealy型序列检测器
  10. 分段函数&数学函数